web-dev-qa-db-ja.com

Html.BeginFormにdata-属性を追加する方法

以下を使用して、モバイルサイトに画像をアップロードするためのフォームを作成します。

@using (Html.BeginForm("Form/", "Quote", FormMethod.Post, new { enctype = "multipart/form-data" }))

ただし、jQuery mobileを使用しているため、Ajaxを有効にして、ページ間の移行がスムーズに行えるようにしました。これにより、ajaxでファイルをアップロードできないため、フォームが画像をアップロードしないという問題が発生しました。ファイルのアップロードを許可するために、このフォームに属性data-ajax="false"を追加する必要があります。

次のバリエーションを複数試しましたが、うまく機能しなかったため、これを行う方法を誰かが知っていますか?

@using (Html.BeginForm("Form/", "Quote", FormMethod.Post, new { enctype = "multipart/form-data", "data-ajax" = "false" }))
33
Pete

コツは、ハイフンの代わりにアンダースコアを使用することです。

new { enctype = "multipart/form-data", data_ajax = "false" }

ハイフンは、c#識別子の一部として使用できません。 MVCフレームワークは、アンダースコアを自動的に変換します。

62
Jan

別のオーバーロードを使用できます。

@using (Html.BeginForm("Form", "Quote", FormMethod.Post, new Dictionary<string, object> { { "enctype", "multipart/form-data" }, { "data-ajax", "false"} })) 
16
YD1m