2009-04-07 19 views
0

asp.net mvcアプリケーションにファイルをアップロードする機能があり、ユーザーはデータベースに永続化する必要があるデータを含むxslxファイルをアップロードできます。そのデータは、多くのカテゴリの1つに関連する可能性があります。入ってくるデータがどのカテゴリに関連しているのか分かるようにする必要があるので、ドロップダウンリストがその仕事には完璧だと思った。しかし、ユーザーがデータを投稿したときにリストを選択値にする方法はわかりません。私は私がコントローラにデータを渡すために使用できるアクションのリンクではなく、入力していないファイルアップロードのシナリオを扱っておりますのでDropDownList with asp.net mvc

<form action="/Import/UploadFiles/" method="post" enctype="multipart/form-data"> 
    <fieldset id="fileImport"> 
     <legend>Importinställningar</legend> 
     <label for="file">Importfil:</label> 
     <input type="file" id="file" name="file" /> 
     <%= Html.DropDownList("Name", (IEnumerable<SelectListItem>)ViewData["assignments"]) %> 
     <p> 
      <input type="submit" value="Spara"/> 
      <input type="button" value="Avbryt" onclick="window.location.href='/'" /> 
     </p> 
    </fieldset> 
</form> 

:これは、フォームのコードは次のようになりますタイプを提出してください。

ドロップダウンリストの選択値を読み取って、選択した値をコントローラに渡すにはどうすればよいですか?

答えて

0

この作業を行うには、いくつかの方法があります。まず、Nameという文字列パラメータをUploadFilesメソッドに追加します。デフォルトのバインダーは、同じ名前のフォーム値からそのバインダーを埋め込みます。代わりに、コントローラー内のValueProviderを使用することもできます。ビューのレンダリングとポストへの応答に同じアクションを使用する場合は、Nameというパラメーターの値を抽出することができます。

public ActionResult UploadFiles(string Name) 
{ 
    ... 
} 

または

public ActionResult UploadFiles() 
{ 
    string name = this.ValueProvider.ContainsKey("Name") 
         ? this.ValueProvider[key].AttemptedValue 
         : null; 

    ... 
} 
+0

私は結果のURLから値を渡すために持っていたスタック思考を得ました。もちろん、これは動作します。本当にありがとう! MVCに慣れるには少し時間がかかります:) – Ciddan