我的代码如下所示。有人可以帮助我,我无法发送模型进行查看。
ViewModel类
IEnumerable<CarList> MyCarPositions
。
在我看来。
@model TestMVC.ViewModel.
foreach (var item in Model.MyCarPositions)
{
@Html.TextBoxFor(x => item.Name)
@Html.TextBoxFor(x => item.Brand)
}
我的控制器
ViewModel carviewmodel = new carviewmodel();
[HttpGet]
public ActionResult Index()
{
carviewmodel.MyCarPositions = repository.GetCarPositions();
return View(carviewmodel);
}
[HttpPost]
public ActionResult Index(ViewModel carvmodel)
{
// Here in httppost carvmodel comes as null.
}
答案 0 :(得分:1)
您的foreach
循环正在生成重复的name
属性而没有不能绑定到模型的索引器。由于重复的id
属性,它也会生成无效的html。您需要使用custum EditorTemplate
为集合中的类型生成集合,或使用for
循环。
您没有向您展示模型,但如果使用MyCarPositions
循环选项,则属性List<T>
必须为for
。
@model TestMVC.ViewModel
@using Html.BeginForm())
{
for (int i = 0; i < Model.MyCarPositions.Count, i++)
{
@Html.TextBoxFor(x => x.MyCarPositions[i].Name)
@Html.TextBoxFor(x => x.MyCarPositions[i].Brand)
}
<input type="submit" .. />
}
这将生成绑定
所需的正确名称属性<input type="text" name="MyCarPositions[0].Name" .... />
<input type="text" name="MyCarPositions[1].Name" .... />
<input type="text" name="MyCarPositions[2].Name" .... />
附注:您应该在控制器方法
中初始化模型// ViewModel carviewmodel = new carviewmodel(); remove this
[HttpGet]
public ActionResult Index()
{
ViewModel carviewmodel = new carviewmodel(); // initialize it here
carviewmodel.MyCarPositions = repository.GetCarPositions();
return View(carviewmodel);
}
答案 1 :(得分:0)
我可以立即看到可能导致您出现问题的语法错误。
foreach (var item in Model.MyCarPositions)
{
@Html.TextBoxFor(x => item Name <--- missing a '.' and a closing bracket
@Html.TextBoxFor(x=>item.Brand)
}
应该是:
foreach (var item in Model.MyCarPositions)
{
@Html.TextBoxFor(x =>item.Name)
@Html.TextBoxFor(x=>item.Brand)
}