1

我根据列表中元素的数量生成多个文本框。

该模型 :

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)
{
..
}

文本框的数量可以根据语言列表中的语言数量而有所不同。你能告诉我如何在控制器中获取这些文本框的值吗

谢谢,

4

2 回答 2

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)
}

模型粘合剂会负责其余的工作。

于 2013-05-13T15:46:10.427 回答
1

您必须使用索引 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)
}
于 2013-05-13T15:45:53.257 回答