Каков наилучший способ хранения списка клиентов для переключения выпадающего списка на сайте asp.net-mvc - PullRequest
1 голос
/ 19 января 2012

У меня есть страница, на которую я загружаю выпадающий список выбора, но я хочу, чтобы код JavaScript переключал этот список на другой набор вариантов.

У меня есть код, который очищает и заполняет список выбора в 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? Должен ли я хранить его в скрытом окне выбора? есть ли здесь рекомендуемая практика?

Ответы [ 2 ]

1 голос
/ 19 января 2012

Самое простое и чистое решение - просто записать в ваше представление json-файл, сохраненный в переменной, к которой вы затем обращаетесь внутри функции UpdateDropdown. На ваш взгляд:

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

Точный метод вывода json будет отличаться в зависимости от версии ASP.NET MVC, которую вы используете, но это должно поставить вас на правильный путь.

И, как правило, рекомендуется создавать единое пространство имен для вашего кода, в которое вы затем помещаете все остальные переменные, чтобы не загрязнять глобальное пространство имен. Так что на самом деле это должно быть что-то вроде:

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

Но первый блок кода, который я предоставил, был бы хорош для начала.

0 голосов
/ 19 января 2012

leora,

Меня вдохновило следующее решение для отправки «списков» из javascript в и mvc action:

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();
    }
}); 

статью можно посмотреть здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...