MVC3部分视图 - DIV可以在Ajax.BeginForm中吗?

时间:2011-03-29 20:08:01

标签: jquery asp.net-mvc-3 asp.net-ajax

这就是我需要做的事情:

我有部分视图(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 ??

: - )

1 个答案:

答案 0 :(得分:2)

你不需要一个Ajax表单。您可以使用id divStatus将PV包装在div中,然后将以下内容用于ActionLinks;

@Ajax.ActionLink("Take a break", "GoOffline", "Account", new AjaxOptions { UpdateTargetId = "divStatus", InsertionMode = InsertionMode.Replace })

您的控制器将保持不变。这应该按预期工作