c# razor mvc textboxfor in foreach 循环

Posted

技术标签:

【中文标题】c# razor mvc textboxfor in foreach 循环【英文标题】:c# razor mvc textboxfor in foreach loop 【发布时间】:2011-06-26 11:56:52 【问题描述】:

如何在 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

顺便说一下 model.Name 在 MyModel.cs 中定义为:

public string Name  get; set; 

【问题讨论】:

【参考方案1】:

您应该能够通过以下方式在您的操作中使用ModelBinder

public ActionResult MyAction(string[] name)

    foreach (var item in name)
    
        // Process items
    

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


编辑:如果您希望将参数名称从 name 更改为更具描述性的名称,您可以使用 Html.TextBox 来实现此目的,尽管会丢失 stong-typing:

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

然后在你的控制器动作中:

public ActionResult MyAction(string[] SomeMoreDescriptiveName)

    ...

【讨论】:

如果我将模型作为参数传递怎么办?我的意思是,如果控制器是这样的: public ActionResult(MyModel model) 并且我正在从模型中获取值? 只要你的模型上有string[] Name get; set; ,默认的ModelBinder仍然可以绑定到它。【参考方案2】:
@foreach (var _item in Model.ListSurvey)

    @Html.TextBoxFor(m=>m.Question, new  Value = @_item.Question )


【讨论】:

以上是关于c# razor mvc textboxfor in foreach 循环的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入

如何在 mvc4 razor 中显示验证消息

从模型中的嵌套对象获取 MVC4/Razor 中 JavaScript 的元素 id

使用 HTML.TextBoxFor 循环遍历模型中的项目 [重复]

MVC3.0 中Razor 学习

使用 MVC/Razor 传递 C# 变量以用于 Dygraph