Html.RenderPartial给我奇怪的重载错误?

时间:2011-03-25 17:19:09

标签: asp.net-mvc asp.net-mvc-3 razor renderpartial

我制作了一个名为 _Test.cshtml 的测试部分页面,并将其放在与我将调用它的视图相同的目录中,这里是:

<div>hi</div>

在调用cshtml视图中,我只是简单地说:

@Html.RenderPartial("_Test")

这给了我错误:

  

CS1502:最佳重载方法   匹配   'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'   有一些无效的论点

我也尝试了相同结果的完整路径。

我很困惑为什么这样做,我想我错过了一些简单的东西?

1 个答案:

答案 0 :(得分:189)

您收到此错误是因为Html.RenderXXX帮助程序返回void - 它们没有任何内容可以返回,因为它们直接将内容写入响应*。你应该像这样使用它们:

@{ Html.RenderPartial("_Test"); }

还有Html.Partial助手,它可以使用你的语法,但我不建议使用它,除非你必须,因为性能(它首先将给定的局部视图组成字符串,然后父视图放置它回应*)。

*这并不完全正确,它们实际上被渲染到ViewContext.Writer中,一旦整个页面被渲染和组合,整个事情就转到了响应