我有一个View
允许编辑List
. ViewModel
该代码一直有效,直到显示功能。但我无法从视图中取回同一列表中的值。
public ActionResult Funtion()
{
List<ViewModel> ViewModel= (List<ViewModel>)TempData["ViewModel"];
return View(ViewModel);
}
[HttpPost]
public ActionResult UserFormSubmission(List<ViewModel> ViewModel)
{
return View();
}
POST 函数的 List 中的值为 null。我如何从视图中获取值到控制器中。
编辑: 我尝试使用提到的解决方案来解决问题如何将 IEnumerable 列表传递给 MVC 中的控制器,包括复选框状态?. 但是遇到以下错误:
无法使用 [] 将索引应用于“System.Collections.Generic.IEnumerable”类型的表达式
我也无法理解其中某些标签的用法,例如AntiForgeryToken
,HiddenFor
等。所以如果可能的话,请有人提出一个简单的解决方案或更好的解释。
编辑 2:我更改@model IEnumerable<ViewModel>
为@model List<ViewModel>
错误无法将 [] 索引应用于类型为 'System.Collections.Generic.IEnumerable 的表达式已得到纠正。
编辑 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>
}
}
}