Html.BeginFormとプロパティの追加


139

enctype="multipart/form-data"を使用して生成されたフォームに追加するにはどうすればよい<% Html.BeginForm(); %>ですか?

回答:


251

htmlAttributesなどの一部として

Html.BeginForm(
    action, controller, FormMethod.Post, new { enctype="multipart/form-data"})

またはnull、アクションとコントローラに渡して、パラメータなしでBeginForm()と同じデフォルトのターゲットを取得できます。

Html.BeginForm(
    null, null, FormMethod.Post, new { enctype="multipart/form-data"})

45
メモと同じように、アクションとコントローラーにnullを渡して、パラメーターなしのBeginForm()と同じデフォルトターゲットを取得できます。
Brad Robinson

2
@ブラッド:素晴らしいコメント!それをアンワーに組み込んだ。
チッコドロ

こんにちは、enctypeを日本語のエンコード形式であるShift-JISとして指定するにはどうすればよいですか?
Govind 2014年

私は常にアクション/コントローラーを指定することを好みます。URLはページの操作に応じて操作できるため、アクション/コントローラーをnullにすると予期しない動作が発生する可能性があるためです。
セザール・レオン

19

厳密に型指定されたバージョンでは、次の構文を使用することもできます。

<% using (Html.BeginForm<SomeController>(x=> x.SomeAction(), 
          FormMethod.Post, 
          new { enctype = "multipart/form-data" })) 
   { %>

1
現在のバージョン(RC1)ではこれを行うことはできません。
Jason Bunting

どちらが巨大なつまらないものなのか:(では、どうすればこれを実行できるのでしょうか?別のDLLが必要ですか?MVCフューチャーか何かですか?
Pure.Krome 2009

4
はい、確かに...強く型付けされた(式ベースの)メソッドはすべてフューチャーアセンブリ(aspnet.codeplex.com/Release/…)にあると思います。
dp。

@ Jason、dp:Nickの拡張メソッドを使用すると、そのような署名を提供することもできます。それでも先物を含めることは確かにより良いアプローチです。
チッコドロ

13

私はこれが古いことを知っていますが、そのフォームを何度も作成する必要がある場合は、カスタム拡張を作成できます。

public static MvcForm BeginMultipartForm(this HtmlHelper htmlHelper)
{
    return htmlHelper.BeginForm(null, null, FormMethod.Post, 
     new Dictionary<string, object>() { { "enctype", "multipart/form-data" } });
}

次に、使用法は

<% using(Html.BeginMultipartForm()) { %>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.