我在视图中有以下代码
<% foreach (var item in Model.stats)
{%>
<label style="style="float:left;"><%= item.Stat_Caption %></label>
<%=Html.TextBox(item.Stat_Caption,item.Stat_Value) %>
<%} %>
Run Code Online (Sandbox Code Playgroud)
我正在尝试将我的stats对象(只是一个列表集合)转换为文本框列表,以便用户可以更新它们.
我有工作,如果用户更新文本框,我如何将值应用回列表集合?
您需要将文本框包装在一个表单中:
<% using (Html.BeginForm()) { %>
<% foreach (var item in Model.stats)
{%>
<label style="style="float:left;"><%= item.Stat_Caption %></label>
<%=Html.TextBox(item.Stat_Caption,item.Stat_Value) %>
<%} %>
<input type="submit" value="Save" class="button" /></td>
<% } %>
Run Code Online (Sandbox Code Playgroud)
当您按下提交按钮时,它将使用键/值对执行标准POST,如下所示:
Box1 : Hello
Box2 : World
Run Code Online (Sandbox Code Playgroud)
在控制器端,您需要有一个接收POST请求的方法:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Entity entity)
{
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
Entity您的数据模型对象在哪里.默认的MVC模型绑定器使用反射来填充实体的字段,因此如果实体是这样的:
public class Entity()
{
public string Box1 { get; set; }
public string Box2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后Box1和Box2将设置为POST请求中发送的值.
如果您没有实体,那么您可以使用:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
哪里collection是对象字典.使用这个字典的坏处是它是一个Object类型的字典,所以你必须抓住数据并将其转换回它应该是的任何类型.
| 归档时间: |
|
| 查看次数: |
383 次 |
| 最近记录: |