我根据列表中的元素数生成了一些文本框。
模特:
public class MyModel
{
public List<Language> Languages { get; set; }
public string Code { get; set; }
}
public class Language
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public bool IsDefault { get; set; }
}
视图:
@model MyModel
<form id="formDetail">
@Html.TextBoxFor(m => m.Code)
@foreach (var item in Model.Language)
{
<input type="text" id="@item.Code"/> //the code are : FR, EN, GE, ...
}
</form>
我使用Ajax发布表单(POST)。
控制器:
[HttpPost]
public ActionResult Save(MyModel myModel)
{
..
}
根据语言列表中的语言数量,文本框的数量可能会有所不同。你能告诉我如何在控制器中获取这些文本框的价值
谢谢,
答案 0 :(得分:3)
替换:
@foreach (var item in Model.Language)
{
<input type="text" id="@item.Code"/> //the code are : FR, EN, GE, ...
}
使用:
@for (var i = 0; i < Model.Language.Count; i++)
{
@Html.HiddenFor(x => x.Language[i].Id)
@Html.HiddenFor(x => x.Language[i].Name)
@Html.HiddenFor(x => x.Language[i].IsDefault)
@Html.EditorFor(x => x.Language[i].Code)
}
并且模型活页夹会照顾其余部分。
答案 1 :(得分:1)
您必须使用索引for循环来呈现输入的name
属性的相应值,TextboxFor
帮助程序和隐藏字段,它们会发送{{1}的值property:
Code