View:
@using (Html.BeginForm("AEdit", "Home", FormMethod.Post))
{
<input type="submit" value="确定修改" />
<table><tbody>
@foreach (table_question qname in ViewBag.art1)
{
<tr>
<td><input type="text" value="@m.Answer"/></td>
</tr>
}
</tbody></table>
}
控制:
[HttpGet]
public ActionResult AEdit()
{
ViewBag.art1 = (from a in db.cl_fy_question where a.FYID == 1 select a).ToList();
return View(ViewBag.art1);
}
[HttpPost]
/// <summary>
/// 执行修改
/// </summary>
/// <param name="m"></param>
public ActionResult AEdit(List<table_question> m)
{
try
{
foreach(table_question f in m){
db.Entry(f).State = EntityState.Modified;
}
db.SaveChanges();
return Content("Success!");
}
catch (Exception ex)
{
return Content("修改失败!" + ex.Message);
}
}
蓝色字部分如何修改?
提交List<Model>,需要采用如下构造:
@{
var list=ViewBag.art1 as List<art1able_question>();
for(var i=0;i<list.Count;i++)
{
<tr><td><input type="text" value="@m.Answer" name="[@i].Answer" /></td></tr>
}
}
如上的方式可以提交List,不过如果你是单行提交,直接拼接一个json对象更简单。
这样不行吧,得在页面上组织好数据,组织成List格式的数据,传过来
求解?(from a in db.cl_fy_question where a.FYID == 1 select a) 是获取的数据,有很多行
如何组织?
@甲馨惗: 你看这个页面,http://www.cnblogs.com/domybest/archive/2011/10/17/2215556.html
这个是需要让MVC自动识别的.
@zhangliming: 这个不行吧
@zhangliming: 能否帮忙改下?
@甲馨惗: 我的意思是你想要让Action识别出这个List<Model>,需要在页面渲染的时候处理下,用Html.LabelFor
@zhangliming: 刚接触MVC没多久,这个不是很熟,可否贴个代码出来?
在前端用js做要编辑的数据,组成json对象数组,用$.ajax传到ActionResult AEdit(List<table_question> m)中,mvc本身就给反序列化了!
不通过js拼接字符,能否通过model来实现?
@甲馨惗: @foreach (table_question qname in ViewBag.art1)
{
<tr>
<td><input type="text" value="@m.Answer"/></td>
</tr>
}
改成
@foreach (table_question qname in ViewBag.art1)
{
<tr>
<td><input type="text" value="@m.Answer" name="@m.Answer" /></td>
</tr>
}
试一试看睦