C# MVC4 Razor 部分视图 - 切换视图时刷新整页?

Posted

技术标签:

【中文标题】C# MVC4 Razor 部分视图 - 切换视图时刷新整页?【英文标题】:C# MVC4 Razor Partial Views - Full page refreshing while switching views? 【发布时间】:2012-05-13 04:43:12 【问题描述】:

我正在构建一个典型的管理门户 - 顶部和左侧菜单有两个共享的局部视图 .cshtml 文件。然后,主要内容就是通常的视图文件。

例如,我在“views”中有一个“dashboard.cshtml”和“settings.cshtml”等等。在这些内部,我调用了@Html.Partial("_Layout_topmenu") 和@Html.Partial("_Layout.leftnav")

一切都“工作”正常,除了当我从“仪表板”单击到“设置”并返回“仪表板”时,我看到整个屏幕刷新。我希望只有主要内容部分会刷新,而顶部和左侧导航会保持不变,因为它们是部分视图。我错过了什么吗?

在返回 ActionResult 类型的“Dashboard”和“Settings”GET 方法的控制器代码中,我只是返回 view();

那么是否可以在从 //site/controller/view1 移动到 //site/controller/view2 时保持顶部菜单和左侧导航窗格并不断更改主要内容(并且不涉及 jQuery/AJAX 魔法)... ?

谢谢!

【问题讨论】:

【参考方案1】:

除非您使用的是框架(我认为您不是),或者您通过 ajax 手动将部分视图的 html 加载到它们各自的容器中,否则您只是在发出常规的 http 请求。部分视图仅在服务器端,而不是客户端,因此当您对给定页面发出请求时,会重新加载整个页面。

如果您想独立于其他区域加载内容区域,我建议您考虑从您的控制器方法返回 PartialView(),并通过 jQuery 的 .load() 方法调用该方法。


编辑

不使用 jquery/其他魔法,不。如果你请求一个页面,你将加载一个页面。这应该不足为奇。

【讨论】:

啊,我刚刚编辑了我的帖子,意识到我可能需要通过 jQuery 获取主要内容,而您只是回答了同样的问题。好吧,让我看看通过 .load() 获取部分视图数据!

以上是关于C# MVC4 Razor 部分视图 - 切换视图时刷新整页?的主要内容,如果未能解决你的问题,请参考以下文章

[转载].NET MVC4 Razor 视图预编译

为啥在 MVC4 Razor 视图中找不到扩展方法?

翻译转载官方教程Asp.Net MVC4入门指南:添加一个视图

MVC 4 Razor - 创建动态下拉列表

Razor视图引擎

MVC4如何在父视图单击提交时获取部分视图中的数据