当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC ViewResult与PartialViewResult

如何解决《ASP.NETMVCViewResult与PartialViewResult》经验,为你挑选了4个好方法。

名为ViewResult和的控制器结果有什么区别PartialViewResult?更重要的是,何时PartialViewResult使用?



1> veggerby..:

PartialViewResult用于渲染部分视图(fx.只是用户控件).这对于AJAX的东西来说非常好玩,即


和行动

public ActionResult MyAction() 
{
    return PartialView("SomeView");
}

其中SomeView是MVC用户控件,例如:

<%= DateTime.Now.ToString() %>


重要的一点是关于母版页的问题.使用PartialViewResult时,您通常只想返回一大块标记,而不是返回带有DOCTYPE,标记,脚本引用等的整个页面.它在Ajax场景中非常有用.
我会说:主要是语义学.如果你检查Codeplex源,你将继承ViewResultBase,主要区别是ViewResult支持指定母版页,PartialViewResult不支持
但为什么需要呢?您可以使用常规视图("SomeView")轻松返回用户控件吗?

2> anonymous..:

http://msmvps.com/blogs/luisabreu/archive/2008/09/16/the-mvc-platform-action-result-views.aspx

实际上,您将使用PartialViewResult输出视图的一小部分.这就是为什么在处理它们时没有母版页选项的原因.另一方面,您将使用ViewResult获取"完整"视图.正如您所料,Controller类公开了几种方法,可以减少为即时执行这些类型的操作结果所需的输入量.

一般来说,ViewResult用于呈现具有可选主控的页面,而PartialViewResult用于用户控件(可能响应AJAX请求).



3> Spongman..:

现有的答案都没有真正回答"有什么不同"的问题.

差异如下:

1)视图引擎将尝试查找视图的位置:

对于ViewResult,它位于ViewLocationFormats和MasterLocationFormats中

对于PartialViewResult,它位于PartialViewLocationFormats中

2)ViewResult具有附加属性MasterName

就这些.



4> Danny G..:

在某些情况下,您可能希望将视图分解为几个小组件.我正在使用的一个用例是,我有一个多语言网站,我想使用AJAX原则重新加载内容.

通常,在非多语言站点的情况下,我要做的是创建另一个ActionResult来返回使用新参数更改的ViewModel.我喜欢使用我称之为JsonpResult的自定义ActionResult.问题在于我的标签不在我的数据库中但在资源文件中.所以我需要做的是以某种方式将我的资源文件数据保存到ViewModel中.

一旦数据从管道下来,我的AJAX回调就会使用Javascript处理将ViewModel响应连接回HTML页面(我使用jQuery).

这绝对有效,但它成为可维护性的问题.我现在不仅需要维护原始的ASP.NET视图,还需要维护一组处理AJAXian行为的脚本.如果您需要拥有自己的网站搜索引擎优化,那么您确实需要确保服务器端和客户端的行为都是相同的.

这是Partial Views为我发挥作用的地方.我所做的是"拉出"大量重载发生的逻辑数据部分.PartialView的优点在于您可以将ViewData和Model传递给PartialView.如果您的部分视图是针对ViewModel强类型的,那么您可以使用Intellisense来帮助连接PartialView.

现在我需要对我的AJAX调用做的就是将响应写回单个DIV而不是单独处理数据点.它的意思是会有更多的内容流入管道.但是,权衡更容易阅读和维护代码.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有