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