ASP.NET MVC的ViewResult与PartialViewResult
控制器结果命名ViewResult
和PartialViewResult
之间有什么区别? 更重要的是什么时候使用了PartialViewResult
?
PartialViewResult被用来渲染一个partialview(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>
http://msmvps.com/blogs/luisabreu/archive/2008/09/16/the-mvc-platform-action-result-views.aspx
实际上,您将使用PartialViewResult来输出一小部分视图。 这就是为什么你没有处理它们的母版页选项。 另一方面,您将使用ViewResult获取“完整”视图。 正如你所期望的那样,Controller类公开了几个方法,这些方法可以减less瞬间执行这些types的操作结果所需的input量。
一般来说,ViewResult是用可选的母版来渲染一个页面,PartialViewResult用于用户控件(可能是响应一个AJAX请求)。
现有的答案都没有回答“有什么不同”的问题。
差异如下:
1)视图引擎将尝试查找视图的位置:
- 对于ViewResult,它在ViewLocationFormats和MasterLocationFormats中
- 对于PartialViewResult,它在PartialViewLocationFormats中
2)ViewResult具有附加属性MasterName
就这些。
有几种情况下,你会想把你的看法分解成几个小的组件。 我现在正在使用的一个用例是,我有一个多语言站点,我想用AJAX原理重新加载内容。
通常我会在非多语言站点的情况下做的是创build另一个ActionResult返回正在改变与新参数的ViewModel。 我喜欢使用我称之为JsonpResult的自定义ActionResult。 问题在于我的标签不在我的数据库中,而是在资源文件中。 所以我需要做的是以某种方式将我的资源文件数据保存到ViewModel中。
一旦数据传递到pipe道,我的AJAXcallback处理视图模型响应使用Javascript(我使用jQuery)回到HTML页面的接线。
这绝对有效,但它成为可维护性的问题。 我现在不仅需要维护原始的ASP.NET视图,还需要维护一组处理AJAX行为的脚本。 如果你需要有你的网站SEO,那么你真的需要确保服务器端和客户端行为都工作相同。
这是部分视图为我所用。 我所做的是“拉出”发生大量重载的逻辑数据部分。 PartialView的好处在于,您可以将ViewData和Model传递给PartialView。 如果您的PartialView是针对ViewModel的强types,则可以使用Intellisense来帮助PartialView的布线。
现在,我所需要做的就是将响应写回单个DIV,而不是单独处理数据点。 它意味着会有更多的内容来自pipe道。 但是,权衡更容易阅读和维护代码。
其中一个主要区别是PartialViewResult不使用_ViewStart.cshtml。 _ViewStart.cshtml文件中的代码在视图中任何代码之前的渲染开始时执行。
- 在Chrome中的ASP.NET获得一个奇怪的focus_change nikkomsgchannel错误
- HtmlAgilityPackselectchildNodes不是预期的
- 在页面之间传递数据的最佳实践
- 我可以在ASP.NET中从DirectorySearcher获得1000多条logging吗?
- 多个应用程序使用相同的login数据库相互logging
- <modules runAllManagedModulesForAllRequests =“true”/>含义
- 在C#中parsingJSON
- 将列表序列化为JSON
- 在Build Server上构build不带Visual Studio的ASP.NET 4.5