您可以使用 MVC 的内置 AJAX 助手。大致如下...
声明一些 AJAX 选项:
@{
AjaxOptions ajaxOpts = new AjaxOptions { UpdateTargetId = "target" };
}
然后使用 AJAX BeginForm 方法声明您的表单:
@using (Ajax.BeginForm("GetData", ajaxOpts))
{
@* Here you put your form data. I'm guessing your popup could just be a DIV that gets positioned and made visible *@
}
当 AJAX 请求返回时,您要更新的目标只是一个简单的 DIV:
<div id="target">
@* The output of your GetData controller method will end up here *@
@Html.Action("GetData", new { model = Model })
</div>
然后在您的控制器中,您有一些返回包含您的数据的 PartialView 的东西:
public PartialViewResult GetData(ViewModel model)
{
// Do some stuff here to fetch some data
// ViewModel will be whatever your view model is called
return this.PartialView("GetData", model);
}
这就是让 AJAX 工作的基础。如果您想获取发送回浏览器的 HTML 并更新页面的不同位,则必须添加一个 jQuery 函数,通过为 AjaxOptions 的 OnComplete 参数指定一个函数来调用 AJAX 助手。
然后,您的局部视图中的数据可能包含一些隐藏的 HTML 块,您可以将它们移动到浏览器的其他位置。
不幸的是,MVC AJAX 助手只支持一个 UpdateTargetId。
编辑以添加
您需要在 web 配置文件的 appSettings 中进行设置:
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
您还需要在 html 输出中包含 jQuery 扩展(可能在 _Layout.cshtml 文件中?):
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>