2

我有以下内容:

 @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))

我试过这个:

 @using (Html.BeginForm(new { @class = "form", ReturnUrl = ViewBag.ReturnUrl }))

但是我没有看到添加了类“表单”。我定义它的方式有问题吗?

4

2 回答 2

4

Try defining htmlAttributes parameter explicitly like so:

@using (Html.BeginForm(null, null, FormMethod.Post, htmlAttributes: new { @class = "form-class" })) {
}

Update after reading comment Try using one of the BeginForm overloads that allow you to specify route objects (I have not tested this because I dont have an IDE nearby)

@using (Html.BeginForm("Action", "Controller", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, htmlAttributes: new { @class = "form-class" })) {
}
于 2012-12-30T07:49:54.337 回答
2

如果您想使用默认表单,那会很痛苦,但只需添加一些属性。这是接受属性的重载方法签名。因此,您还需要提供操作名称、控制器名称和表单方法。您拥有的第一个表单是设置 RouteValueCollection。

我过去所做的是创建自己的帮助程序来绕过限制。这是一个将所有其他参数短路的示例扩展方法。

using System.Web.Mvc.Html;

namespace MySite.Extensions {
    public static class HtmlFormExtensions {
        public static MvcForm BeginForm(this HtmlHelper htmlHelper, RouteValueDictionary routeValues, IDictionary<string, Object> htmlAttributes) {
            return htmlHelper.BeginForm(null, null, routeValues, FormMethod.Post, htmlAttributes);
        }
    }
}

确保在视图中包含您的命名空间(或通过 web.config 的所有视图),然后像这样调用它:

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }, new { @class = "form" }))
于 2012-12-30T07:43:39.613 回答