Asp.net mvc ASP.NET MVC中的持久化模型数据

Asp.net mvc ASP.NET MVC中的持久化模型数据,asp.net-mvc,Asp.net Mvc,我有两个控制器功能:一个用于默认查看,另一个用于回发。第一个用于为模型列表指定一些默认值。第二个是向列表中添加其他值。之后,页面将显示列表的内容。现在,我失去了列表中的所有内容,除了最新的控制器函数所做的 我希望我的模型数据能够持久化,如何做到这一点?将数据持久化到数据库中(使用EF(http://msdn.microsoft.com/en-us/library/bb399572.aspx)). 将数据保存在数据库中(使用EF(http://msdn.microsoft.com/en-us/l

我有两个控制器功能:一个用于默认查看,另一个用于回发。第一个用于为模型列表指定一些默认值。第二个是向列表中添加其他值。之后,页面将显示列表的内容。现在,我失去了列表中的所有内容,除了最新的控制器函数所做的


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

将数据持久化到数据库中(使用EF(http://msdn.microsoft.com/en-us/library/bb399572.aspx)).

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

我想你会遇到这样的情况:

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);
  }
}
...
<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>
...
公共类模型{
公共列表{get;set;}
...
}
公共类MyController
{
公共行动结果列表(){
返回视图(新模型{List=新列表{/*某些项*/}});
}
[HttpPost]
public ActionResult AddToList(模型,字符串itemText){
model.List.Add(/*具有指定文本的另一项*/);
返回视图(“列表”,模型);
}
}
在显示的列表页面中,您可以使用AddToList操作添加1个项目,也可以使用list操作初始化整个项目列表。发生的事情是很自然的,因为你不会把清单发回

如果是这种情况,则必须回发整个模型,包括列表本身,以便向现有列表添加项目

这实际上是为列表页生成正确视图的问题。触发AddToList操作的表单必须包含整个模型/列表的日期。视图生成的HTML应如下所示:

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);
  }
}
...
<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>
...
。。。
...
新项目案文:
...
...

我想你会遇到这样的情况:

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);
  }
}
...
<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>
...
公共类模型{
公共列表{get;set;}
...
}
公共类MyController
{
公共行动结果列表(){
返回视图(新模型{List=新列表{/*某些项*/}});
}
[HttpPost]
public ActionResult AddToList(模型,字符串itemText){
model.List.Add(/*具有指定文本的另一项*/);
返回视图(“列表”,模型);
}
}
在显示的列表页面中,您可以使用AddToList操作添加1个项目,也可以使用list操作初始化整个项目列表。发生的事情是很自然的,因为你不会把清单发回

如果是这种情况,则必须回发整个模型,包括列表本身,以便向现有列表添加项目

这实际上是为列表页生成正确视图的问题。触发AddToList操作的表单必须包含整个模型/列表的日期。视图生成的HTML应如下所示:

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);
  }
}
...
<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>
...
。。。
...
新项目案文:
...
...