【问题标题】:MVC3 Partial View - Can the DIV be inside the Ajax.BeginForm?MVC3 部分视图 - DIV 可以在 Ajax.BeginForm 内吗?
【发布时间】:2011-03-29 20:08:00
【问题描述】:

这是我需要做的:

我有一个局部视图 (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>  
}  

CONTROLLER ...返回自己?

    public ActionResult GoOffline()
    {
        GoOffline();
        ViewData["IsLogged"] = "False";
        return PartialView("_OnlineStatusCtrl");
    }

问题:
整个页面重绘为 PV,所以我猜它不是在

内绘制自己

问题是我如何调用 Ajax.Beginform 吗?
是我将 放在 Ajax.BeginForm 中的问题吗?
问题是我应该把 Ajax.BeginForm 放在 _layout.cshtml 上吗?

...只是我还是不懂MVC??

:--)

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 该解决方案有效但会产生不同的问题,因为其中一个 PV 包含 &lt;script&gt; 而当我用不包含 &lt;script&gt; 的 PV 替换它时 ...由于某种原因 @987654324 @ 仍然存在......这会导致问题。
    • 我可以确认设置如下;
      @Html.Action("GoOffline", "Account")
      您的 PV 不包含 divStatus 标签,它保留在 PV 之外。如果这是您拥有它的方式,那么它不应该留下任何脚本标签,应该替换 divStatus 标签中的所有内容
    • 我解决了如下问题:
      @if (Convert.ToBoolean(ViewData["IsLogged"].ToString())) {
      ONLINE >> @Html.ActionLink("Take a Break", "GoOffline", "Account")
      @Html.RenderPartial("_PingServer"); } ----------------- 当我删除“@” 时,Html.RenderPartial ...现在可以工作了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多