私は次のものを持っています:
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))
私はこれを試しました:
@using (Html.BeginForm(new { @class = "form", ReturnUrl = ViewBag.ReturnUrl }))
ただし、クラス「フォーム」が追加されていません。私がそれを定義している方法に何か問題がありますか?
私は次のものを持っています:
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))
私はこれを試しました:
@using (Html.BeginForm(new { @class = "form", ReturnUrl = ViewBag.ReturnUrl }))
ただし、クラス「フォーム」が追加されていません。私がそれを定義している方法に何か問題がありますか?
次のように htmlAttributes パラメータを明示的に定義してみてください。
@using (Html.BeginForm(null, null, FormMethod.Post, htmlAttributes: new { @class = "form-class" })) {
}
コメントを読んだ後に更新 ルートオブジェクトを指定できるBeginFormオーバーロードの1つを使用してみてください(近くに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" }))