【发布时间】:2013-09-09 09:18:29
【问题描述】:
我有一个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 函数列表中的值为空。 我怎样才能从视图中获取值到控制器中。
编辑: 我尝试使用提到的解决方案来解决问题How to pass IEnumerable list to controller in MVC including checkbox state?。但是遇到如下错误:
无法将带有 [] 的索引应用于“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>
}
}
}
【问题讨论】:
-
请添加更多关于视图的代码,例如
-
@ElvinArzumanoğlu - 这与当前情况无关。我只包含了需要的内容。
-
如果您有新问题,请发布新问题。不要用独立的问题不断更新你现有的问题,因为你最终会在同一个列表中得到不同问题的答案。你已经解决了你的问题——你的模型是有约束力的。您的 RadioButtons 和 DropDownLists 的问题是分开的。
-
@AntP - 这是同一个问题。这就是它更新的原因。
标签: c# asp.net-mvc-4