13

我的一个视图页面中有以下位置:

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

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

Html.Partial("Form") 它在任何 if 语句之外并呈现一切正常时,它工作正常。

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

请帮助

4

2 回答 2

31

当您在代码块内时,您应该使用 RenderPartial 方法。

Html.RenderPartial("Form");

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

于 2013-03-29T08:09:31.927 回答
5

尝试更换:

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

和:

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

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

于 2013-03-29T08:10:42.843 回答