如何解决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))。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。