我有一个部分视图,里面有两个相反的ActionLink:
<div id="divStatus>
@if (IsAuthenticated)
Html.ActionLink("Say Bye", "ProcBye", "Account")
else
Html.ActionLink("Say Hi", "ProcHi", "Account")
</div>
每个Action链接在Controller上调用不同的方法。
我听说我应该使用 Ajax.BeginForm ,但我还不清楚如何把它放进去?
我的理解是,我需要 <div id="divStatus">
来显示结果,但在我的情况下......结果是部分视图本身。
问题:我如何确保将控制器只是刷新调用的部分视图?
我应该在PV外添加 div 吗?
我应该在 div 中添加围绕的'@if(IsAuthenticate)'来电吗?
在这种情况下,使用 Ajax.BeginForm 或 Ajax.ActionLink 更好吗?
代码: Controller的代码应该是什么样的?
public ActionResult ProcBye()
{
// do something on the server
// set IsAuthenticated = false;
return PartialView("_myPV");
}
没有涉及验证,没有需要填充的“外部”div,只需PV的简单刷新,与PV所在的页面无关。
真正感谢任何帮助!!!
答案 0 :(得分:4)
我个人不会同时使用。我会使用一个单独的javascript文件,我将AJAX化链接:
$(function() {
$('.mylink').click(function() {
$('#resultdiv').load(this.href);
return false;
});
});
其中resultdiv将是一个div,它将使用控制器操作返回的部分结果进行更新:
<div id="resultdiv"></div>
您只需要放置mylink
类:
@if (IsAuthenticated)
{
@Html.ActionLink("Say Bye", "ProcBye", "Account", null, new { @class = "mylink" })
}
else
{
@Html.ActionLink("Say Hi", "ProcHi", "Account", null, new { @class = "mylink" })
}
如果您愿意,也可以使用Ajax.ActionLink
:
@if (IsAuthenticated)
{
@Ajax.ActionLink("Say Bye", "ProcBye", "Account", new AjaxOptions { UpdateTargetId = "resultdiv" })
}
else
{
@Ajax.ActionLink("Say Hi", "ProcHi", "Account", new AjaxOptions { UpdateTargetId = "resultdiv" })
}
在这种情况下,不要忘记包含jquery unobtrusive ajax脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>