Html.Partial不在if语句下工作

时间:2013-03-29 08:00:44

标签: .net asp.net-mvc razor

我在其中一个视图页面中有以下内容:

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

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

Html.Partial("Form")在if if语句之外时,if可以正常工作,并使一切正常。

但是当在Form Partial view块内部它什么都没有呈现时,如果语句被命中,那是真的,调试器eves读取函数并转到{{1}}并遍历其中的每一行但最后页面上没有输出。

请帮助

2 个答案:

答案 0 :(得分:27)

当你在代码块中时,你应该使用RenderPartial方法。

Html.RenderPartial("Form");

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

答案 1 :(得分:5)

尝试更换:

Html.Partial("Form"); // <- this will return string

使用:

Html.RenderPartial("Form"); // <- writes to response

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