【问题标题】:Refresh partialview in _Layouts.cshtml刷新 _layout.cshtml 中的局部视图
【发布时间】:2011-06-24 09:45:14
【问题描述】:

我有以下局部看法:

<span>Login Status</span>
@{
    if (ViewBag.UserId > 0)
    {
        @Html.ActionLink("Log Out", "LogOut", "Home", null);
    }
    else {
        @Html.ActionLink("Log In", "Login", "Home", null);
    }
}

这只是一个假装的登录状态区域。现在,想法是让它出现在我的 MVC 站点的母版页中,以便它出现在所有页面上。这是我在 _Layout.cshtml 文件中呈现它的方式:

<div id="login">
   @{ Html.RenderPartial("LoginStatus"); }
</div>

我想要的是,当用户单击“登录”或“注销”链接时,会执行一个操作(使用户登录/注销),然后刷新部分视图 -但是页面的其余部分是单独的。

目前,当我点击任何链接时,网站会导航到“主页/登录”或“主页/注销”。我不希望它呈现视图,我只想刷新部分视图,无论我在哪个页面上。

建议的方法是什么?

干杯。 贾斯。

【问题讨论】:

    标签: asp.net-mvc-3 partial-views renderpartial


    【解决方案1】:

    您可以使用 AJAX。因此,您可以使用 jquery 通过订阅它们的点击事件并将 AJAX 请求发送到相应的控制器操作来不显眼地对这些链接进行 AJAX 化,该控制器操作将返回部分视图并更新 DOM。

    【讨论】:

    • 感谢您的建议。在这种情况下,我刚刚快速尝试了使用 Ajax.BeginForm() 并且我快到了。我将使用我拥有的代码编辑我的问题,但是当我提交我的部分视图时,我的代码不会更新 BeginForm 区域中的 div,而是导航到我在 BeginForm 中声明的 Home/。有时间我会把代码贴出来,这样会更有意义。
    【解决方案2】:

    试试@Ajax.ActionLink() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-20
      • 2015-01-11
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      相关资源
      最近更新 更多