У меня есть View
, который позволяет редактировать List
из ViewModel
. Код работает до отображения функциональности. Но я не могу получить значение в том же списке из представления.Получение списка <ViewModel> from View to Controller
public ActionResult Funtion()
{
List<ViewModel> ViewModel= (List<ViewModel>)TempData["ViewModel"];
return View(ViewModel);
}
[HttpPost]
public ActionResult UserFormSubmission(List<ViewModel> ViewModel)
{
return View();
}
Значение в списке функции POST равно null. Как я могу получить значения из представления в контроллер.
EDIT: Я попытался с помощью решений, упомянутых в assolution на вопрос How to pass IEnumerable list to controller in MVC including checkbox state?. Но возникла следующая ошибка:
Cannot apply indexing with [] to an expression of type 'System.Collections.Generic.IEnumerable
Также я не мог понять, использование определенных тегов в нем, как AntiForgeryToken
, HiddenFor
и т.д. Так что, если возможно, кто-то пожалуйста, придумать простое решение или лучшего объяснения.
EDIT 2: Я изменил @model IEnumerable<ViewModel>
к @model List<ViewModel>
и ошибке Невозможно применить индексирование с [] к выражению типа «System.Collections.Generic.IEnumerable было исправлено.
EDIT 3: я был в состоянии получить значение Textbox
и CheckBox
в контроллер, но RadioButton
и DropDownList's selected values cant be identified at the
[HttpPost] `функция? Что мне здесь не хватает?
@for (i = 0; i < Model.Count(); ++i)
{
if (Model[i].TypeId == 4)
{
//radiobutton
for (int j = 0; j < Model[i].Options.Count(); ++j)
{
<div>
@Html.HiddenFor(m => m[i].Options[j].OptionId)
@Html.HiddenFor(m => m[i].Options[j].OptionValue)
@Html.HiddenFor(m => m[i].Options[j].Id)
@Html.RadioButtonFor(m => m[i].Options[j].Value, @Model[i].Options[j].DisplayText)
@Html.DisplayFor(m => m[i].Options[j].DisplayText)
</div>
}
}
}
Введите код, например:
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx – Vladimir
@ ElvinArzumanoğlu - Это не имеет отношения к текущей ситуации.Я включил только то, что нужно. –