Содержимое списка MVC3 для значений модели - PullRequest
0 голосов
/ 14 декабря 2011

Я использую ASP.NET MVC3, и мне было интересно, есть ли способ создать список, содержащий значения, которые я хотел бы иметь в моей модели.

Использование @ Html.ListBoxFor сохранит выбранные элементы в модели только при отправке формы, а не все элементы в списке.Я планирую использовать JavaScript для добавления элементов из другого текстового поля.

Спасибо

Ответы [ 3 ]

2 голосов
/ 14 декабря 2011

Вам не ясно, но вы пытаетесь вернуть значения POST?Если это так, то они должны быть выбраны (то есть активными) значения формы для POST.Если вы используете JavaScript для добавления параметров в список (HTML select>, тогда они не публикуются. Вам нужно включить множественный выбор, а затем пометить каждое значение, которое вы хотите отправить, как выбранное.

Чтобы получитьзначения обратно они должны POST каким-то образом.

1 голос
/ 14 декабря 2011

Нет. Это не имеет ничего общего с MVC3. Это ограничение модели HTTP. Когда форма публикуется, браузер публикует только выбранное значение. Он не публикует другие элементы списка выбора.

MVC должен работать в рамках работы браузеров, и это нельзя изменить.

0 голосов
/ 14 декабря 2011

Да, вы можете сделать это. Вам нужно сделать пару вещей, чтобы это сработало, но это может беспокоить.

В поле зрения:

//generate list box with 
<select id="NAMEOFLISTBOX" name="NAMEOFLISTBOX" multiple="multiple">

Хорошо, вот часть, которую пропускает большинство людей. Контроллер будет собирать только выбранные элементы, если они действительно предназначены для выбора. Поэтому там, где находится кнопка «Отправить», необходимо включить некоторый JavaScript.

<input type="submit" value="DO WORK" onclick="selectLISTBOXITEMS()" />

Сценарий:

function selectLISTBOXITEMS(){
    var curList = document.getElementById("NAMEOFLISTBOX");
    for (var i = 0; i < curList.length; i++) {
        curList.options[i].selected = true;
    }
}

В контроллере:

[HttpPost]
public ActionResult controllerName(List<string> NAMEOFLISTBOX)
{
    foreach(string s in NAMEOFLISTBOX)
    {
        //do work
    }
    return RedirectToAction("controllerGet");
}

Не невозможно, но в первый раз, когда я сделал это, потребовалось некоторое время, чтобы понять, почему ничего не отправлялось.

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