私のASP.NET MVC Razorページにフォームが必要です。私の好みは、次の構文を使用することです:Html.BeginForm()へのHTML属性の追加のバリエーション
@using (Html.BeginForm())
{
}
しかし、私はいくつかの属性は、フォームに追加する必要があります。だから私は次のようなものになった:
@using (Html.BeginForm(null, null, FormMethod.Post, new { name = "value" }))
{
}
しかし、これは望ましくない副作用があります。このページのリクエストにクエリ引数がある場合、最初のフォームはフォームが送信されるときにそれらを渡します。ただし、2番目のバージョンではありません。
なぜBeginForm()
が属性をサポートしていないのか分かりませんが、BeginForm()
に属性を追加する簡単な方法はありますが、forが送信されたときに引き続きクエリ引数を渡しますか?
EDIT:この構文を使用するとき
<form action="@Request.RawUrl" method="post" name="value">
</form>
がしかし、クライアント側の検証が無効になっている:
このに見た後、最善の解決策は、このようなものであると思われます。より複雑で潜在的に信頼性のない構築物がなければ、この状況に対する良い解決策はないようです。
おかげ@Darinを。 'IncrementFormCount'、' DefaultFormIdGenerator'、そして 'FormHelper'が何をするのか少し説明できますか? –
@ JonathanWood、FormHelperはTagBuildersを使って '
ありがとうございました。それはうまくいくようです。しかし、受け入れる 'BeginForm()'のバージョンとあいまいさを避けるために、 '@using(Html.BeginForm(HtmlHelper.AnonymousObjectToHtmlAttributes(new {@class =" form-horizontal "})))ちょうどルート値。 –