这就是我需要做的事情:
我有部分视图(PV):
@if (Convert.ToBoolean(ViewData["IsLogged"].ToString()))
{
<div id="onlineStatus">
ONLINE >>
@Html.ActionLink("Take a Break", "GoOffline", "Account")
</div>
}
else
{
<div id="offlineStatus">
IN A BREAK >>
@Html.ActionLink("Go Online", "GoOnline", "Account")
</div>
}
我把这个PV放在* _layout.cshtml *上,所以当我点击 ActionLink 时,页面应该保持不变,PV应该只能以异步方式重绘自己。
我正在阅读使用 Ajax.BeginForm ,看来它需要 ,但我的问题是:
Q1:我应该把 放在 Ajax.BeginForm 里面吗?
@using (Ajax.BeginForm(new AjaxOptions {
UpdateTargetId="divStatus",
InsertionMode=InsertionMode.Replace })) {
<div id="divStatus">
@if (Convert.ToBoolean(ViewData["IsLogged"].ToString()))
{
<div id="onlineStatus">
ONLINE >>
@Html.ActionLink("Take a Break", "GoOffline", "Account")
</div>
}
else
{
<div id="offlineStatus">
IN A BREAK >>
@Html.ActionLink("Go Online", "GoOnline", "Account")
</div>
}
</div>
}
控制器......回归自己?
public ActionResult GoOffline()
{
GoOffline();
ViewData["IsLogged"] = "False";
return PartialView("_OnlineStatusCtrl");
}
问题:
整个页面重绘为PV,所以我猜它不会在
问题是我如何调用 Ajax.Beginform ?
问题是我把 放在 Ajax.BeginForm 中吗?
问题是我应该将 Ajax.BeginForm 放在 _layout.cshtml 上吗?
......只是我还是不明白MVC ??
: - )
答案 0 :(得分:2)
你不需要一个Ajax表单。您可以使用id divStatus将PV包装在div中,然后将以下内容用于ActionLinks;
@Ajax.ActionLink("Take a break", "GoOffline", "Account", new AjaxOptions { UpdateTargetId = "divStatus", InsertionMode = InsertionMode.Replace })
您的控制器将保持不变。这应该按预期工作