2012-01-19 3 views
1

私は選択ドロップダウンボックスをロードするページを持っていますが、私はjavascriptコードをこのリストを別の選択肢のセット。asp.net-mvcサイトのドロップダウン選択を切り替えるリストクライアント側を保存する最良の方法は

私はJavaScriptで選択リストボックスをクリアし、再生成したコード

function UpdateDropdown(list, dropdownSelector) { 
var options = ''; 
$.each(list, function (index, value) { 
    if (value.Text == null) { 
     value.Text = ''; 
    } 
    if (value.Value == null) { 
     value.Value = '0'; 
    } 

    options += '<option value="' + value.Value + '">' + value.Text + '</option>'; 
}); 
$(dropdownSelector).html(options); 

}

ので、それは問題ではないですが、私の質問は、私は私の見解からローカル配列を格納することができますどのようにしてい後でjavascriptから参照するモデルですか?隠しセレクトボックスに保存する必要がありますか?ここにお勧めの練習はありますか?

答えて

1

最も簡単でクリーンな解決策は、ビューにいくつかのjsonを書き込んで、変数に格納してUpdateDropdown関数内でアクセスすることです。あなたのビューで:

<script type="text/javascript"> 
    var globalData = @Html.Raw(Json.Encode(Model.MyArray)); 
</script> 

あなたが出力JSONに使用正確な方法は、あなたが使用しているASP.NET MVCのバージョンによって異なりますが、それは正しい軌道に乗ってあなたを置く必要があります。

一般的なjavascriptのベストプラクティスは、コードのための単一の名前空間を作成し、他のすべての変数を入れて、グローバル名前空間を汚染しないようにすることです。だから実際には次のようなものになるはずです:

<script type="text/javascript"> 
    var MyApp = {}; 
    MyApp.dropdownData = @Html.Raw(Json.Encode(Model.MyArray)); 
</script> 

しかし、私が提供したコードの最初のブロックは始めるのがいいでしょう。

0

leora、

私はとMVCアクションのjavascriptから 'リスト' を送信するため、以下のソリューションに触発されました:

http://zootfroot.blogspot.com/2011/09/jquery-post-javascript-array-to-aspnet.html

:あなたはここの記事を見ることができます

var leadIds = $('input.chkTileSelector:checked').map(function() { 
                  return { name: 'leadIds', value: $(this).parents('div.Lead').data('id') }; 
               }).get(); 

$.ajax({ 
    url: '@Url.Action("UnParkLeads", "Lead")', 
    type: 'POST', 
    dataType: 'json', 
    data: leadIds, 
    success: function (result) { 
     ReloadResultGrid(); 
    } 
}); 

関連する問題