在MVC5中使用Razor渲染部分视图

Mou*_*ark 22 asp.net-mvc razor asp.net-mvc-5

我试图在MVC5中使用Razor进行局部视图渲染.我用的时候

@{ Html.RenderPartial("ViewName", model); }
Run Code Online (Sandbox Code Playgroud)

我得到解析器错误:

"@"字符后出现意外的"{".一旦进入代码块的主体(@if {},@ {}等),您就不需要使用"@ {"来切换到代码.

当我删除{},即:

@Html.RenderPartial("ViewName", model);
Run Code Online (Sandbox Code Playgroud)

我收到编译错误

无法将类型'void'隐式转换为'object'.

我究竟做错了什么?

Chr*_*att 29

您尚未发布该代码的上下文,但只有当您在@代码块中直接使用而没有任何HTML包装时才会发生该错误.例如:

@if (true) {
    @{ Html.RenderPartial(...); }
}
Run Code Online (Sandbox Code Playgroud)

会给你错误,而:

@if (true) {
    <div>
        @{ Html.RenderPartial(...); }
    </div>
}
Run Code Online (Sandbox Code Playgroud)

没关系.您也可以通过完全删除代码块来解决它Html.RenderPartial,包括@:

@if (true) {
    Html.RenderPartial(...);
}
Run Code Online (Sandbox Code Playgroud)


Dev*_*per 23

你也可以使用 @Html.Partial("~/View/Home/myview.cshtml")

它在Html.RenderPartial内部调用Write时返回字符串,并返回void.


Bel*_*014 9

这是错的:

@Html.RenderPartial("ViewName", model);
Run Code Online (Sandbox Code Playgroud)

这是对的:

@{ Html.RenderPartial("ViewName", model);  }
Run Code Online (Sandbox Code Playgroud)

解析错误可能是由部分视图的内容引起的.例如,如果您有电子邮件地址,请确保使用@@正确转义@符号.

"@"字符后出现意外的"{".一旦进入代码块的主体(@if {},@ {}等),您就不需要使用"@ {"来切换到代码.