ASP.NET MVC中的持久模型数据

问题描述

| 我有两种控制器功能:一种用于认查看,另一种用于回发。我用来为模型列表分配一些认值的第一个。第二个是将其他值添加到列表中。在这之后,页面显示列表的内容。现在,除了最新的控制器功能之外,我将丢失列表中的所有内容。 我希望我的模型数据能够持久保存,怎么办?     

解决方法

        我想你有这样的情况:
public class Model {
  public List<..> List { get; set; }
  ...
}

public class MyController 
{
  public ActionResult List() {
    return View(new Model { List = new List<..> { /* some items */ } });
  }

  [HttpPost]
  public ActionResult AddToList(Model model,string itemText) {
    model.List.Add(/* another item with specified text*/);
    return View(\"List\",model);
  }
}
在显示的列表页面中,您可以通过AddToList操作添加一个项目,也可以在List操作中初始化整个项目列表。发生的事情很自然,因为您不会将列表发回。 如果是这种情况,则必须回发整个模型,包括列表本身,以便将项目添加到现有列表中。 这实际上是为列表页面生成正确的视图的问题。触发AddToList操作的表单必须包含整个模型/列表的日期。视图生成的HTML应该如下所示:
...
<form method=\"POST\" action=\"/MyController/AddToList\">
   <input type=\"hidden\" name=\"model.List[0]\" value=\"value1\" />
   ...
   <input type=\"hidden\" name=\"model.List[N]\" value=\"valueN\" />
   New item text: <input type=\"text\" name=\"itemText\" />
   ...
</form>
...
    ,        将数据持久保存在数据库中(使用EF(http://msdn.microsoft.com/zh-cn/library/bb399572.aspx))。