ASP.NET MVC post可变数量的文本框到控制器
本文关键字:文本 控制器 MVC NET post ASP | 更新日期: 2023-09-27 18:13:16
根据列表中元素的个数生成一个数字文本框。
模型
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)
{
..
}
根据"语言"列表中语言的数量,文本框的数量可以不同。你能告诉我如何在控制器
中获取这些文本框的值吗?谢谢,
Replace:
@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)
}
模型绑定器会处理剩下的
您必须使用索引for循环来呈现name
属性的相应值,用于输入,TextboxFor
助手和隐藏字段,该字段发送Code
属性的值:
@for (int i=0; i<Model.Language.Count; i++)
{
@Html.TextboxFor(m => Model.Language[i].Name)
@Html.HiddenFor(m => Model.Language[i].Code)
}