我正试图在MVC5中使用Razor进行局部视图渲染。当我使用
@{ Html.RenderPartial("ViewName", model); }
我收到解析器错误:
“@”字符后出现意外的“{”。一旦进入代码块的主体(@if {},@ {}等),您就不需要使用“@ {”切换到代码。
当我删除{}
时,即:
@Html.RenderPartial("ViewName", model);
我收到编译错误
无法将类型'void'隐式转换为'object'。
我做错了什么?
答案 0 :(得分:29)
您尚未发布该代码的上下文,但只有在您没有任何HTML包装的情况下直接在代码块中使用@
时,才会发生该错误。例如:
@if (true) {
@{ Html.RenderPartial(...); }
}
会给你错误,同时:
@if (true) {
<div>
@{ Html.RenderPartial(...); }
</div>
}
没关系。您也可以通过完全删除Html.RenderPartial
的代码块来解决此问题,包括@
:
@if (true) {
Html.RenderPartial(...);
}
答案 1 :(得分:20)
您也可以使用@Html.Partial("~/View/Home/myview.cshtml")
它返回字符串,而Html.RenderPartial
在内部调用Write,并返回void。
答案 2 :(得分:9)
这是错误的:
@Html.RenderPartial("ViewName", model);
这是正确的:
@{ Html.RenderPartial("ViewName", model); }
解析错误可能是由部分视图的内容引起的。例如,如果您有电子邮件地址,请确保使用@@正确转义@符号。
意外&#34; {&#34;在&#34; @&#34;字符。一旦进入代码体内 阻止(@ if {},@ {}等)你不需要使用&#34; @ {&#34;切换到 代码。
答案 3 :(得分:3)
可以显示RenderPartial周围的代码吗?我猜你是在一个循环中,如果是块,或者其他类型的代码块。如果是这样,你只需要打电话
Html.RenderPartial("ViewName", model);
答案 4 :(得分:0)
请检查您的代码,因为您使用此代码,可能会收到该错误:
@{ Html.RenderPartial("ViewName", model); }
在任何其他@{}
子句中。请仔细阅读您在浏览器中收到的错误消息,您不需要使用@{}
切换到代码,因为您已经在内部,因此,只需删除@{
和{ {1}}你应该让它正常运作。
答案 5 :(得分:0)
使用@Html.Partial()
。它具有三个重载,根据您的要求传递参数。