在Razor View Model中向Ajax.BeginForm调用添加一个类

时间:2012-01-12 16:59:17

标签: asp.net-mvc-3 html5 razor

我有以下代码

@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "update_panel", Url = "/Part/SearchPart" }))
        {
            <input type="text" placeholder="Search Parts"/>
            <input type="submit" value="Search"/>
        }

它输出以下HTML

<form action="/Part" data-ajax="true" data-ajax-mode="replace" data-ajax-update="#update_panel" data-ajax-url="/Part/SearchPart" id="form0" method="post">                        
    <input type="text" placeholder="Search Parts"/>
        <input type="submit" value="Search"/>
</form>

我希望输出的HTML有,形式&gt;标记为class =“pull-right”。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:27)

您可以使用one of the overloads来指定html attributes ::

@using (Ajax.BeginForm(null, null, new AjaxOptions { UpdateTargetId = "update_panel", Url = "/Part/SearchPart" }, new { @class = "pull-right" }))
{
    <input type="text" placeholder="Search Parts"/>
    <input type="submit" value="Search"/>
}

此外,我强烈建议您依赖表单的网址,而不是在AjaxOptions中对其进行硬编码,因为当您在虚拟目录中部署应用程序时,可能是您的硬编码/Part/SearchPart网址不管用。更不用说你是否改变了Global.asax中的路由模式。所以:

@using (Ajax.BeginForm("SearchPart", "Part", null, new AjaxOptions { UpdateTargetId = "update_panel" }, new { @class = "pull-right" }))
{
    <input type="text" placeholder="Search Parts"/>
    <input type="submit" value="Search"/>
}

答案 1 :(得分:1)

您必须将您的操作和控制器从表单中引用。

这是一个例子:

@using (Ajax.BeginForm("LogOn","Account", new AjaxOptions { UpdateTargetId = "update_panel", Url = "/Part/SearchPart" }, new { @class ="pull-right"}))
{
    <input type="text" placeholder="Search Parts"/>
    <input type="submit" value="Search"/>
}