asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别
转载自 : 《asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别》
先复制过来。。
带Render的方法返回值是void,在方法内部进行输出;不带Render的返回值类型为MvcHtmlString,是一个字符串。
Partial和RenderPartial:直接加载视图文件内容;Action和RenderAction:重新执行一次Controller→Model→View的顺序,然后把产生的页面带回到原来的View中再回传。
Partial和RenderPartial:可以直接提供用户控件名作为参数;Action和RenderAction:需要有对应的Action,在Action内部返回PartialResult(即return PartialView())。
对于简单的没有任何逻辑的用户控件,推荐使用Partial;对于需要设置一些Model的用户控件,推荐使用Action。
使用Html.Action有另外一个好处,就是在return PartialView时可以根据不同的场景选择不同的用户控件。
当时用到@Html.Action被耍..然后查到了上边的文章..感觉写的很好..有对比.容易理解
其实他们的共同点就是非常类似于 以前用的 incloud 都是把别处的文件或者值加载到当前页面..
区别就是在应用过程中..如果那个文件内部需要计算的..需要传参的..需要调用数据库等实用Model的..则区分使用..
要注意的是
Action和RenderAction:重新执行一次Controller→Model→View的顺序,然后把产生的页面带回到原来的View中再回传。
这句话..就意味着..如果你在加载的页面里..不修改Layout 的值..输出的结果很可能令你吃惊..因为要报错的..
或者是把你调用的这个文件的值又填充到了你母版页的@RenderBody() 处..
所以建议在这个文件的前边写上 Layout=null