2012-05-04 7 views
2

私は基本的にKeyValuePairに相当するものをレンダリングするMVCビューを用意しています。これは以下のRazor構文を使用し、次のHTMLを生成します。バインドリストボックス(複数)をモデルに戻す

@Html.DropDownListFor(x => x.SelectedItems, new SelectList(Model.SelectedItems, "Key", "Key"), new { Class = "selectList selectedList", size = "2" }) 

HTML:

function GenericSubmit(formSelector, sender, callback) { 
    if (typeof (sender) != "undefined" && $(sender).hasClass('disabled')) { 
     return false; 
    } 

    var $that = $(formSelector); 
    var that = $that.get(0); 
    if ($that.valid()) { 
     $.ajax({ 
      url: that.action, 
      type: that.method, 
      data: $(that).serialize(), 
      success: function (data, textStatus, jqXHR) { 
       callback.call(that, data); 
      } 
     }); 
    } 
    return false; 
} 

私が経験しています問題は、あるしかし:

<select class="selectList selectedList" id="SelectedItems" name="SelectedItems" size="2"> 
    <option value="842">Item 1</option> 
    <option value="326">Item 2</option> 
    <option value="327">Item 3</option> 
</select> 

私は以下のように、私たちのフォームを投稿するjQueryと一般的な機能を使用して手動でフォームを掲示しています送信されているデータだけが実際の値です(これはJQが動作する方法です)。しかしIEnumerableにバインドする必要があります。

フォームに送信されたPOSTデータを見ると、次の値が送信されていることがわかります。私のモデルにnullコレクションがある理由がわかります。ここに私のKeyValueViewModelされる - 追加明確にするために

/// <summary> 
/// An response for dealing with list type entities 
/// </summary> 
public class ListEntityResponse : EntityScreenResponse 
{ 
    /// <summary> 
    /// Contains a Enumerable of items that can be selected 
    /// </summary> 
    public List<KeyValueViewModel> AvailableItems { get; set; } 

    /// <summary> 
    /// Contains a Enumerable of items that have been selected 
    /// </summary> 
    public List<KeyValueViewModel> SelectedItems { get; set; } 

    public ListEntityResponse() 
    { 
     AvailableItems = new List<KeyValueViewModel>(); 

     SelectedItems = new List<KeyValueViewModel>(); 
    } 


} 

:私は、このためのハイとローの検索した

public class KeyValueViewModel 
    { 
     public string Key { get; set; } 

     public string Value { get; set; } 
    } 

Current Results

次のように

SelectedItems:842 
SelectedItems:326 
SelectedItems:327 

私のモデルがありますしかし、作品に何かを見つけることができないようだ、どんな助けも高く評価されるだろう!

ありがとう、

答えて

0

//私はあなたの質問を誤解していたことを知った。

あなたが複数の値によバインドしたい場合は、

//

ListBoxFor使用する必要がありますなぜあなたはおそらく既に持っているその何かあればビューからすべてこの情報を受信するコントローラが必要なのかあなたのバックエンドに?

あなたがフォームに投稿したものだけを気にすることは意味があります。

何が必要なの再びビューをレンダリングするためにこのデータを再投入する場合(検証エラーがあったので、ここでエレガントなアプローチがあります)

http://www.paulstovell.com/clean-aspnet-mvc-controllers

+0

はい、私は私のバックエンドでそれを持っているが、私ドンますこのデータのためにDBをもう一度打つことを本当にしたいと思っています..しかし、私はフォームで提出されたものだけを気にするべきだと同意します...しかし、一方ではIEnumとして使用する必要がありますアイテムをレンダリングして選択項目を編集できるようにします。 リンクをありがとう - 私はそれを読んで、チャックノリスが言うものを参照してください! –

+0

まだ喜んではいません。問題を説明するための画像を追加しました –

関連する問題