MVC - @ Html.Partial vs Html.RenderPartial

时间:2015-02-26 18:34:44

标签: asp.net-mvc razor

为什么这样可以正常渲染局部视图?

@Html.Partial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml")

虽然这会返回错误:

@{
    Html.RenderPartial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml");
}
  

您试图访问'/Areas/Search/Views/Home/Index.cshtml'   无法找到。

为什么它会抱怨View的渲染?

1 个答案:

答案 0 :(得分:1)

从功能上讲,它们是相同的,假设你实际上有类似的东西:

@{ Html.RenderPartial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml"); }

而不仅仅是:

Html.RenderPartial("~/Areas/Search/Views/Shared/_CoverageSearch.cshtml");

后者不是有效的Razor语法,因此视图无法正确呈现。

否则,唯一的区别是RenderPartial直接写入响应,而Partial返回一个字符串。但是,这两种方法都不会导致您指出的错误。

我认为最有可能的是,您已将此视图作为活动标签进行了调试。 Visual Studio有时会混淆并使实际视图文件成为您的起始URL,这是通过浏览器无法访问的。只需将浏览器中的URL更改为最终加载该视图的实际路径即可。