代码之家  ›  专栏  ›  技术社区  ›  Nirman

如何在Ajax中使用@Html.RenderPartial。Beginform?

  •  2
  • Nirman  · 技术社区  · 11 年前

    是否可以在@using(Ajax。BeginForm)代码块内部使用@Html.RenderPartial? 如果我使用@Html.RenderPartial,它就不起作用,如果我将整个剃刀代码直接放在@using(Ajax。BeginForm)块中,它就起作用。

    有人能建议一下这是否可行吗?

    1 回复  |  直到 11 年前
        1
  •  5
  •   Community Egal    7 年前

    如果 Html.RenderPartial 就在后面 @using(Ajax.BeginForm(...)) 那么您不需要在调用Html.RenderPartial之前加上 @ 正如剃刀所理解的那样,你仍然处于同一个代码块中。

    所以,这很好:

    @using (Ajax.BeginForm(...)) {            
        Html.RenderPartial("_PartialView", Model);
        <p>after partial view inside the ajax form</p>
    }
    

    如果在`@using(Ajax。BeginForm(…))和render partial之间有一些html,那么razor将在调用RenderPartial之前结束代码块,您需要这样做:

    @using (Ajax.BeginForm(new AjaxOptions())) {            
        <div>
            <h3>partial view inside the ajax form</h3>
            @{ Html.RenderPartial("_PartialView", Model); }
        </div>
    }
    

    还要注意 Html.Render部分 是一个返回void并在内部调用Write的方法,因此使用它的语法与使用时略有不同 Html.Partial ,这就是为什么你需要用“@{”包围它(当它还不在代码块中时),并用分号结束。请参阅 this question