名为ViewResult
的控制器结果和PartialViewResult
之间的区别是什么?更重要的是,什么时候使用PartialViewResult
?
发布于 2009-01-23 14:19:59
PartialViewResult用于渲染局部视图(fx.仅仅是一个用户控件)。这对于AJAX的东西来说是相当不错的。
<script type="text/javascript">
$.get(
"/MyController/MyAction",
null,
function (data) { $("#target").html(data) }
);
</script>
和动作
public ActionResult MyAction()
{
return PartialView("SomeView");
}
其中SomeView是一个MVC用户控件,例如:
<div>
<%= DateTime.Now.ToString() %>
</div>
发布于 2011-03-23 09:22:20
在某些情况下,您可能希望将视图分解为几个小组件。我现在正在使用的一个用例是,我有一个多语言站点,我希望使用AJAX原则重新加载内容。
通常,对于非多语言站点,我要做的是创建另一个ActionResult来返回随新参数变化的ViewModel。我喜欢使用我称为JsonpResult的自定义ActionResult。问题在于我的标签不在我的数据库中,而是在资源文件中。因此,我需要做的是以某种方式将我的资源文件数据合并到ViewModel中。
一旦数据进入管道,我的AJAX回调就会使用Javascript (我使用jQuery)处理ViewModel响应返回HTML页面的连接。
这肯定是可行的,但这会成为一个可维护性的问题。现在,我不仅需要维护原始的ASP.NET视图,还需要维护一组处理AJAXian行为的脚本。如果你需要你的站点SEO,那么你真的需要确保服务器端和客户端的行为都是一样的。
这就是局部视图对我起作用的地方。我所做的是“拉出”大量重载发生的逻辑数据部分。PartialView的好处是你可以把你的ViewData和模型传递给PartialView。如果你的PartialView是针对你的ViewModel强类型的,你可以让智能感知来帮助连接PartialView。
现在,对于AJAX调用,我需要做的就是将响应写回单个DIV,而不是单独处理数据点。这确实意味着会有更多的内容从管道中流出。然而,权衡的是代码更容易阅读和维护。
发布于 2016-05-14 21:16:53
其中一个主要区别是PartialViewResult不使用_ViewStart.cshtml。_ViewStart.cshtml文件中的代码在渲染开始时在视图中的任何代码之前执行。
https://stackoverflow.com/questions/472963
复制相似问题