public class Student
{
public string Name { get; set; }
public string Id { get; set; }
public static List<Student> GetStudents()
{
List<Student> stus = new List<Student>();
stus.Add(new Student() { Id = "1", Name = "张三" });
stus.Add(new Student() { Id = "2", Name = "李四" });
return stus;
}
}
namespace BookShopUI.Controllers
{
public class TestController : Controller
{
public ActionResult Index()
{
return View("Index", Student.GetStudents());
}
[HttpPost]
public ActionResult Index(List<Student> students)
{
students.ForEach(s => s.Id = string.Format("{0}{0}", s.Id));
return View("Index", students);
}
}
}
<div>
<% using (Html.BeginForm())
{ %>
<% for (int i = 0; i < Model.Count; i++)
{ %>
<br />
<%= Html.TextBox("students[" + i + "].Id", Model[i].Id)%> :
<%= Html.TextBox("students[" + i + "].Name", Model[i].Name)%>
<p></p>
<%}
%>
<input type="submit" value="全部提交"/>
<%
} %>
</div>
为了学习mvc的集合数据绑定,做个一个小例子。在第一次提交页面后,文本框中能够显示“1 张三”,修改为“11 张三”,提交。期待出现“1111 张三”的结果,但是页面却没有任何变化。
如果这里不用Html.TextBox(),而是直接使用<input type="text" value ="<%= Model[i].Id %>" />的话,就能出现希望的“1111”,不知道是什么原因,求解释,谢谢!
用Html.TextBoxFor()看看
我是想知道我这里究竟是错了什么问题。客户端修改数据后能够传回到Server端,为什么Server端修改集合元素的值之
后再传递给Client时就无法正常显示呢?我跟踪了一下,发现在页面<%%>内部是可以看到我更新后的内容,可是呈现后
就还原了。但是如果不是集合属性,又都没有问题