我的局部视图仍调用/呈现_Layout.cshtml

时间:2016-02-10 10:30:01

标签: c# jquery html asp.net asp.net-mvc

我有一个MVC5 asp.net c#应用程序。

我开始渲染主页。

现在,当我的用户点击一个按钮时,它会调用一个jquery函数。

此功能的目的是获取第二页的html内容,并使用该内容重新生成第一页内容而不刷新整个页面。

所以,在我的_Layout页面中,我有这个DIV:

<div id="mainContent">
    @RenderBody()
</div>

这将加载我的默认页面。

此默认页面中的jquery函数为:

$("#divHomeBanner").click(function () {
    var url = '/Welcome2';
    $('#mainContent').load(url);
});

背后的代码是:

[HttpGet]
[Route("~/Welcome2")]
public ActionResult Welcome2()
{
    return PartialView();
}

我通过加载默认页面进行测试 单击菜单选项 单击将“带我回到”欢迎页面的按钮(此示例名为Welcome2,是Welcome的完整副本)。

我注意到的是,所有资源都被重新加载,即JavaScript库。

我认为使用partials的整个意图是通过ajax渲染内容?

这是错的还是我错了?

由于

1 个答案:

答案 0 :(得分:2)

在您的视图中,您已将其部分添加到其上:

@{
 Layout = null;
}

这将确保您的视图_Layout.cshtml或者如果您具有其他名称的主布局不会被调用。

另一个建议是使用@Url.Action()帮助生成网址而不是使用魔术字符串:

var url = '@Url.Action("Welcome2","ControllerName")';