通过单击按钮以 mvc 形式触发模式弹出窗口

Posted

技术标签:

【中文标题】通过单击按钮以 mvc 形式触发模式弹出窗口【英文标题】:Trigger modal popup in mvc form with a button click 【发布时间】:2015-02-08 21:58:18 【问题描述】:

我在 mvc 中有这个视图,我在其中显示模型的详细信息。模态弹出窗口工作正常,直到我没有将它放入表单块中。现在它只是回发而不是显示弹出窗口。

这是我的观点:

@using App.Portal.WebUI.Controllers
@using MvcPaging
@model IPagedList<App.Models.Device>

    @
        ViewBag.Title = "Manage Devices";
    

<h2>Manage Devices</h2>
@html.ActionLink("Add New Device", "Manage", "Handhelds", new  @class = "editUser btn btn-info" )
<button id="showInactive" class="btn btn-primary">Show Inactive Devices</button>
<br /><br />
@using (Ajax.BeginForm("Home", "Handhelds",
    new AjaxOptions UpdateTargetId = "grid-list", HttpMethod = "get", LoadingElementId = "loading", OnBegin = "beginPaging", OnSuccess = "successPaging", OnFailure = "failurePaging",
    new id = "frm-search"))

    <div class="input-append">
        <input class="span2" id="appendedInputButton" type="text" name="handheld" placeholder="Enter Text" />
        <button class="btn" type="submit">
            <i class="icon-search"></i>&nbsp;Search</button>
    </div>
    <br />
    <div id="grid-list">
        <div class="table-responsive">
            <table id="dataTable" class="table table-striped">
                <tr>
                    <td>No</td>
                    <td>Device ID</td>
                    <td>Serial Number</td>
                    <td>Options</td>
                </tr>
                @foreach (var device in Model)
                
                    <tr>
                        <td>@device.DeviceID</td>
                        <td>@device.DeviceIDView</td>
                        <td>@device.DeviceSerialNumber</td>
                        <td>
                            @Html.ActionLink("Edit", "Manage", new id = @device.DeviceID, new @class = "editUser btn btn-info")
                            <button id="btnDeleteHandheld" class="deleteHandheld btn btn-danger" data-id="@device.DeviceID">Delete</button>
                        </td>
                    </tr>
                
            </table>
        </div>
    </div>


<script type="text/javascript">
    $(document).ready(function () 
        $('button.btnAddDevice').click(function () 
            $('#addNewDevice').modal('show');
        );

        $('button.deleteHandheld').click(function () 
            $("#hfDeviceId").val($(this).data('id'));
            $('#deleteConfirm').modal('show');
        );

        $('button.deleteDeviceConfirm').click(function () 
            $.ajax(
                url: '@Url.Action("Delete", "Handhelds")',
                data:  deviceid: $("#hfDeviceId").val() ,
                dataType: "json",
                type: 'POST',
                success: function (data) 
                    if (data === "OK") 
                        $('#deleteConfirm').modal('hide');
                        $('#deleteConfirmation').modal('show');
                        setTimeout(function () 
                            location.reload();
                        , 3000);
                    
                ,
                error: function (textStatus, errorThrown) 
                    Success = false;//doesn't goes here
                
            );
        );
    );

</script>

<div id="deleteConfirm" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                <h4>Are you sure you want to remove the device?</h4>
                <button class="btn btn-success deleteDeviceConfirm">Yes</button>
                <button class="btn btn-danger" data-dismiss="modal">No</button>
                <input type="hidden" id="hfDeviceId" />
            </div>
        </div>
    </div>
</div>

<div id="deleteConfirmation" class="modal fade" data-backdrop="static" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                <h4>Device removed</h4>
                <button class="btn btn-danger btn-block" data-dismiss="modal">OK</button>
            </div>
        </div>
    </div>
</div>

我需要 id 为 btnDeleteHandheld 的按钮来触发相关的模式弹出窗口。我需要改变什么?

【问题讨论】:

您是否尝试将“事件”作为按钮单击的函数参数并调用 e.preventDefault() ?在函数中的语句结束时也返回 false? 【参考方案1】:

我认为button 默认会提交输入。为了防止帖子使用 preventDefault 像这样:

   $('button.deleteHandheld').click(function (e) 
        e.preventDefault();
        $("#hfDeviceId").val($(this).data('id'));
        $('#deleteConfirm').modal('show');
    );

你也可以用这个替换你的按钮:

<input type="button" "id="btnDeleteHandheld" class="deleteHandheld btn btn-danger" data-id="@device.DeviceID">Delete</input>

【讨论】:

以上是关于通过单击按钮以 mvc 形式触发模式弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

javascript--自定义弹出登陆窗口(弹出窗)

ASP.NET MVC 在 jQuery 数据表中使用带有按钮 onclick 的模态弹出窗口

如何在按钮单击时将部分视图呈现为模式弹出窗口?

将部分视图加载到模式弹出窗口中

使用spring MVC重新加载弹出页面

如何在 android studio 的弹出窗口内添加滚动的 listView?