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
其中name
是Html.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 中 JavaScript 的元素 id