我有以下内容:
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))
我试过了:
@using (Html.BeginForm(new { @class = "form", ReturnUrl = ViewBag.ReturnUrl }))
但是我没有看到添加了“表单”类。我定义它的方式有问题吗?
答案 0 :(得分:4)
尝试明确定义htmlAttributes参数:
@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" })) {
}
答案 1 :(得分:2)
如果您想使用默认表单,那就太痛苦了,只需添加一些属性即可。 Here is the overloaded method signature that accepts attributes。因此,您还需要提供操作名称,控制器名称和表单方法。您拥有的第一个表单是设置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" }))