当我使用HTML时,如何将类定义添加到表单中?ASP中的BeginForm.净MVC4



我有以下内容:

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

我试过了:

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

然而,我没有看到类"形式"添加。我定义它的方式有问题吗?

尝试像这样显式定义htmlatattributes参数:

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

阅读评论后更新尝试使用BeginForm重载之一,允许您指定路由对象(我没有测试这个,因为我没有IDE附近)

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

如果您想使用默认表单,但只需添加一些属性,这是一个痛苦。下面是接受属性的重载方法签名。因此,您还需要提供操作名称、控制器名称和表单方法。第一个表单是设置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" }))

最新更新