Будет ли модель ASP.NET MVC Model Binder сохранить размещенный массив в правильном порядке?

StackOverflow https://stackoverflow.com/questions/3111373

Вопрос

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

Можно ли предположить, что в списке (целого числа) будут числа в том же порядке, что и в массиве, который я разместил?

Спасибо за ваше время!

РЕДАКТИРОВАТЬ:

Размещенные данные выглядят так:

Postdata = model.levelids = 6 & model.levelids = 19 & model.levelids = 16 & model.levelids = 21 & model.levelids = 18

Я использую Data Data Firefox, чтобы увидеть его.

Я использую jQuery, в традиционном режиме.

РЕДАКТИРОВАТЬ:

Действие выглядит примерно так:

public function Create(byval model as thecreateviewmodel) as actionresult

У TheCreatViewModel есть куча свойств, но интересный ...

Public Property LevelIdsAs IList(Of Integer) = New List(Of Integer)

На стороне клиента модель представления строится с JavaScript/jQuery:

function NewEntityDataBuilder() {
    var theData = { 
        'model.Name' : $('#Name').val(),
        'model.Description' : $('#Description').val(),
        'model.LevelIds' : $('#LevelIds').val()
    };
    return theData;
}

Эта функция вызывается из этого бита JavaScript, который в основном проходит через и добавляет все вещи в списке в раскрывающий список (выберите «Контроль») и выбирает их все.

$('#LevelIds').empty();
$('#AddedLevels').children().each(function () {
$('#LevelIds').append("<option value='" + $(this).attr('LevelId') + "'>" + $(this).attr('LevelId') + "</option>");
        });

$('#LevelIds').children().attr('selected', 'selected');  //select all the options so they get posted.

var dataToPost = NewEntityDataBuilder();   

Это кажется довольно запутанным, когда это ставит таким образом, но на самом деле это довольно просто. Все это часть 2 списков подключенных перетаскивания, которые являются частью формы.

SO: если я помесчу значение списка выбора со всеми его параметрами, выбранными в переменной, и опубликую это в ILIST (из целого числа), они будут иметь их в том же порядке, что и в выборе. Похоже, они есть. Но это просто совпадение?

Это было полезно?

Решение

Обычно индекс является частью имени параметра:

ints[0]=0&ints[2]=2&ints[1]=1

И если у вас есть действие контроллера, которое выглядит так:

public ActionResult Index(List<int> ints)
{
    // ints[0] = 0
    // ints[1] = 1
    // ints[2] = 2
    return View();
}

ОБНОВИТЬ:

Предположим, что у вас есть несколько параметров с одним и тем же именем в строке запроса. Эта строка запроса будет проаналирована двигателем ASP.NET Httprequest объект быть преобразован в NamevalueCollection и точнее пользовательская реализация под названием HttpValueCollection. Анкет Этот класс является внутренним для ASP.NET, что означает, что он не задокументирован и может измениться с версиями .NET. Глядя на это с помощью отражателя, есть FillFromString и то, как он реализован, это, кажется, сохраняет порядок. Но это то, на что я бы не стал положиться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top