2016-10-17 9 views
0

にnullを返します。私のビューのDropDownListには関連するオプションが表示されますが、コントローラのfoldersは値nullを取得します。@ Html.DropDownListはコントローラ

なぜですか?コントローラー内のfoldersが、DropDownListのビューから選択されたオプションを取得するように、どうすれば修正できますか?

P.S - モデルはありません。

これは私のコントローラである:

//POST: Home 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Index(IEnumerable<HttpPostedFileBase> file, string folder, IEnumerable<SelectListItem> folders) 
{ 
    // some code here 
} 

は、これが私の見解です:

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    @Html.AntiForgeryToken(); 

    <div class="container"> 
     <div class="form-horizontal"> 
      <div class="form-group"> 
       <p></p> 
       <label for="file">Upload Photo:</label> 
       <input type="file" name="file" id="file" accept="image/*" multiple="multiple"/> 
      </div> 
      <div class="form-group"> 
       <div> 
        <label>Choose Album:</label> 
        @if (ViewBag.Folders != null) 
        { 
         @Html.DropDownList("folders", new SelectList(ViewBag.Folders as IEnumerable<SelectListItem>, "Value", "Text"), "--- Select Album ---", new { @class = "form-control" }) 
        } 

       </div> 
      </div> 
      <div class="form-group"> 
       <div> 
        <input type="submit" value="Upload" class="btn btn-default" /> 
       </div> 
      </div> 
     </div> 
    </div> 
} 

感謝。フォルダを取得するため、あなたのドロップダウンリストに対応する名前を与えるで

+0

だからあなたは正しい選択したフォルダを、したいですか?アクションが**フォルダ**を期待しているのはなぜですか? –

+0

実際には...なぜフォルダ__AND__フォルダが必要ですか? – DarkSquirrel42

+0

'folder'は新しいフォルダを作成するためのもので、' folders'は既存のフォルダからフォルダを選択することです。私は 'DropDownList'のデータで、代わりに' null'を返します。それは問題です。 – nirh1989

答えて

0

Sakthivelガネサンは、string foldersにコントローラにIEnumerable<SelectListItem> foldersを変更した後、唯一のことを行うために残さありがとうです変更するにはHtml.DropDownListValue to Textこのように...

から:

@Html.DropDownList("folders", new SelectList(ViewBag.Folders, "Value", "Text"), "--- Select Album ---", new { @class = "form-control" }) 

へ:

@Html.DropDownList("folders", new SelectList(ViewBag.Folders, "Text", "Text"), "--- Select Album ---", new { @class = "form-control" }) 
0

...

@ Html.DropDownList(「フォルダ」...

は名前「のフォルダを持っているあなたのDDLになります"... ... modelbinderはそれを変換することができない、あなたの方法で foldersIEnumerable<SelectListItem>ある...単一の項目をポストバックしようとします...

は(Html.DropDownList @

を試してみてください"フォルダ" ...

ノートの行方不明

今名前がバインダーが最も可能性の高いあなたのために結合することができるようになりますあなたの方法でstring folderパラメータ...に対応し...

あなたのようなエラーをデバッグ場合これは、デバッガを使用して、HttpContext.Request.Paramsを見て、要求が行われたときに戻ってきたことを表示します...

+0

だから私は 'flders'型を変更する必要があります'IEnumerable 'から 'string'へのコントローラでは? – nirh1989

0

ビューは選択された項目のみを返します。

//POST: Home 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Index(IEnumerable<HttpPostedFileBase> file, string folder, string folders) 
{ 
    // some code here 
} 
+0

あなたが提案したように 'string'に変更しました。' null'の代わりに空の値を取得しました... ...まだ問題があります – nirh1989

+0

* now *の代わりに.... – nirh1989

0

別のオプションを指定したかっただけです。クライアント側のソリューションを活用することができれば、隠された入力値とJQueryでこれを少しでも強化することができます。

は、非表示の入力コントロールを追加します。

<input name="selectedFolder" type="hidden" value="" /> 

は、いくつかのjQueryを追加します。

+0

私はJQueryをよく理解していません。 ..私の提案にあなたの提案を加えるなら、それはうまくいくでしょうか?私の 'DropDownList'から選択されたアイテムはコントローラにトラフされますか? – nirh1989

関連する問題