有一个页面主要用于显示WebGrid(MVC 5)和用于编辑行的Bootstrap 3.0.2模式(jQuery 2.0.3)。只是一个小问题......当我点击列标题和寻呼机链接中的排序链接时,不仅当我点击一行而且也时,对话框才出现。理想情况下,我希望能够区分触发ajaxUpdateCallback的内容,以便我可以在回调处理程序中有条件地显示模态。
以下是我的观点代码......
@using School.Models
@model IEnumerable<Course>
@{
ViewBag.Title = "Courses";
}
<h2>@ViewBag.Title</h2>
@{
var grid = new WebGrid(Model, rowsPerPage: 15, ajaxUpdateContainerId: "gridContent", ajaxUpdateCallback: "webGridUpdated");
}
<div id="gridContent">
@grid.GetHtml(htmlAttributes: new { id = "grid", @class = "table table-striped table-hover table-condensed" },
columns: grid.Columns(
grid.Column("Name", header: string.Format("Name {0}", grid.SortColumn == "Name" ? grid.SortDirection == SortDirection.Ascending ? "▼" : "▲" : ""),
format: @<text>@item.GetSelectLink(item.Name)</text>),
grid.Column("Active", header: string.Format("Active {0}", grid.SortColumn == "Active" ? grid.SortDirection == SortDirection.Ascending ? "▼" : "▲" : ""),
format: (item) =>
{
var course = item.Value as Course;
return Html.DisplayFor(modelItem => course.Active);
}
)
)
)
@if (grid.HasSelection)
{
@Html.Partial("Edit", (Course)grid.SelectedRow.Value)
}
else // New Course
{
@Html.Partial("Create", new Course() { })
}
</div>
<script type="text/javascript">
function webGridUpdated() {
// Would like to be able to wrap this in a conditional
$('#EditModal').modal('show');
}
</script>
答案 0 :(得分:1)
在Chrome开发工具中,您可以在“Any XHR”事件上设置断点。一旦断点被击中,您可能能够查看调用堆栈以确定触发XHR的内容。
答案 1 :(得分:0)
发现我的模态对话框的表单操作是使用AJAX设置为/ Courses / Edit / 4(或任何非零整数),如果我点击网格中的一行但/ Courses / Edit / 0如果我单击Sort或Pager超链接。所以我在网格的回调中添加了一些代码来检查这个并有条件地打开Bootstrap模式。