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

时间:2013-10-09 11:01:22

标签: asp.net-mvc-4 renderpartial ajax.beginform

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

有人可以建议是否有可能吗?

1 个答案:

答案 0 :(得分:5)

如果Html.RenderPartial就在@using(Ajax.BeginForm(...))之后,那么您不需要使用@将Html.RenderPartial的调用作为前缀,因为razor知道您仍然在同一个代码块中

所以,这很好用:

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

如果在`@using(Ajax.BeginForm(...))和渲染部分之间你有一些html,那么razor会在你调用RenderPartial之前结束代码块,你需要这样做:

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

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