ASP.NET MVC で Html.BeginForm() に ID プロパティを追加する方法 (jQuery とは関係ありません)
ASP.NET MVC で Html.BeginForm()
ヘルパーを使ってフォームを作成するとき、フォーム自体に ID を設定したい場合があります。実は、Html.BeginForm()
に直接 ID を設定することはできませんが、代わりに匿名オブジェクトを使って属性を渡すことができます。
手順
- フォームを作成する際に、
Html.BeginForm()
の 4 番目の引数として匿名オブジェクトを渡します。
@Html.BeginForm("ActionName", "ControllerName", new { id = "myForm" }, FormMethod.Post)
@Html.EndForm()
このコードでは、フォームに id="myForm"
が設定されます。
ポイント
- この場合、
id
プロパティに"myForm"
という値を設定しています。 - 匿名オブジェクトは、プロパティ名と値のペアで構成されます。
ASP.NET MVC でフォームを作成する際、Html.BeginForm()
ヘルパーを使うことができます。このヘルパーを使ってフォームを作成したときに、フォーム自体に ID を設定したい場合があります。ただし、Html.BeginForm()
に直接 ID を設定することはできません。
解決方法
代わりに、Html.BeginForm()
の 4 番目の引数として、匿名オブジェクトを使って属性を渡すことができます。
コード例
@Html.BeginForm("ActionName", "ControllerName", new { id = "myForm" }, FormMethod.Post)
@Html.EndForm()
new { id = "myForm" }
の部分が匿名オブジェクトです。
jQuery は、生成された HTML を操作したり、フォーム送信時の挙動をカスタマイズするために使用されます。
先ほど説明したように、匿名オブジェクトを使って属性を渡すのが最も一般的です。これはシンプルでわかりやすい方法です。
ASP.NET MVC 5 以降 (Razor Tag Helpers)
ASP.NET MVC 5 以降であれば、Razor Tag Helpers を利用することもできます。こちらはコードがより簡潔になります。
<form asp-controller="ControllerName" asp-action="ActionName" id="myForm" method="post">
</form>
注意点
asp-controller
やasp-action
は、それぞれ送信先の MVC コントローラー名とアクション名を指定します。- 上記のコードは
@Html.BeginForm
を使わずに直接フォーム要素 (<form>
) を記述しています。
jQuery を用いた方法 (※ 本来は不要)
もし、どうしても JavaScript 側でフォームの ID を取得したい場合は、ASP.NET MVC で生成された HTML を JavaScript から取得し、DOM 操作で ID を確認することができます。
**ただし、これはあまり推奨される方法ではありません。**というのも、ASP.NET MVC で生成された HTML 構造は今後変わる可能性があるため、JavaScript 側で依存してしまうとコードの保守性が悪くなってしまうからです。
jquery asp.net-mvc forms