Html.Partial不在if语句下工作

Mav*_*ven 12 .net asp.net-mvc razor

我在其中一个视图页面中跟踪了loc:

@* Html.Partial("Form")*@

  @{
    var role = Convert.ToInt32(Session["Role"]);
    if (role == 2)
    {
        Html.Partial("Form");
    }
}
Run Code Online (Sandbox Code Playgroud)

在Html.Partial("Form") 当其以外的if语句,并呈现一切细腻精致的作品.

但是当在一个if块里面它什么也没有渲染时,如果语句被命中,那是真的,调试器eves读取函数并进入Form Partial view并遍历其中的每一行,但最后页面上没有输出.

请帮助

Ufu*_*arı 27

当您在代码块中时,应该使用RenderPartial方法.

Html.RenderPartial("Form");
Run Code Online (Sandbox Code Playgroud)

Html.Partial返回一个HtmlString,如果它不在代码块中,它将被呈现给页面.在您的情况下,Razor会解析您的视图并将结果返回给您的代码.由于您没有做任何事情来渲染它,因此您无法获得输出.


web*_*per 5

尝试更换:

Html.Partial("Form"); // <- this will return string
Run Code Online (Sandbox Code Playgroud)

有:

Html.RenderPartial("Form"); // <- writes to response
Run Code Online (Sandbox Code Playgroud)

Html.Partial vs Html.RenderPartial&Html.Action vs Html.RenderAction