будет ли связыватель модели asp.net mvc сохранять размещенный массив в правильном порядке? - PullRequest
2 голосов
/ 24 июня 2010

так что у меня есть массив чисел, который я публикую в действии asp.net mvc, у которого есть параметр list (целого числа), и все это прекрасно работает.
мой вопрос такой:

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

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

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

Публикуемые данные выглядят следующим образом:

POSTDATA = model.LevelIds = 6 & model.LevelIds = 19 & model.LevelIds = 16 & model.LevelIds = 21 & model.LevelIds = 18

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

Я использую 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 связанных перетаскиваемых списков, которые являются частью формы.

так: если я помещу значение списка выбора со всеми его опциями, выбранными в переменную, и опубликую это в ilist (целого числа), ilist будет иметь их в том же порядке, в котором они были в select,Это выглядит, как они.но это просто совпадение?

1 Ответ

0 голосов
/ 25 июня 2010

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

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

UPDATE:

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

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