通过单击按钮以 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> 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 形式触发模式弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章