我有两个控制器功能:一个用于默认查看,一个用于回发。第一个我用来为模型列表分配一些默认值。第二种是向列表中添加其他值。之后,页面显示列表的内容。现在,我正在丢失列表中的所有内容,除了最新的控制器功能。
我希望我的模型数据能够持续存在,如何做到这一点?
答案 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))。