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

时间:2011-05-30 16:13:56

标签: asp.net-mvc

我有两个控制器功能:一个用于默认查看,一个用于回发。第一个我用来为模型列表分配一些默认值。第二种是向列表中添加其他值。之后,页面显示列表的内容。现在,我正在丢失列表中的所有内容,除了最新的控制器功能。

我希望我的模型数据能够持续存在,如何做到这一点?

2 个答案:

答案 0 :(得分:1)

我想你有这样的情况:

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>
...

答案 1 :(得分:0)

将数据保留在数据库中(使用EF(http://msdn.microsoft.com/en-us/library/bb399572.aspx))。