foreach循环中的c#razor-mvc文本框

本文关键字:文本 c#razor-mvc 循环 foreach | 更新日期: 2023-09-27 18:00:19

如何在foreach循环中从TextBoxFor助手检索数据?我的意思是:

在视图中:

foreach(Language l in ViewBag.Languages){
    <td>@l.lang</td>
    <td>@Html.TextBoxFor(model => model.Name)
}

一旦发布,我如何在控制器中检索它?

MyModel.Name //this returns the value of the first textbox within the foreach loop

顺便说一句,模型。名称在MyModel.cs中定义为:

public string Name { get; set; }

foreach循环中的c#razor-mvc文本框

您应该能够通过使用在操作中使用ModelBinder

public ActionResult MyAction(string[] name)
{
    foreach (var item in name)
    {
        // Process items
    }
}

其中nameHtml.TextBoxFor()自动赋予文本框的名称。


编辑:如果您希望将参数名称从name更改为更具描述性的名称,您可以通过使用Html.TextBox来实现这一点,尽管不需要键入:

@Html.TextBox("SomeMoreDescriptiveName", Model.Name);

然后在你的控制器动作:

public ActionResult MyAction(string[] SomeMoreDescriptiveName)
{
    ...
}
@foreach (var _item in Model.ListSurvey)
{
    @Html.TextBoxFor(m=>m.Question, new { Value = @_item.Question })
}