【发布时间】:2017-06-24 14:00:06
【问题描述】:
我对 MVC 完全陌生,从我熟悉的 Webforms 迁移过来。
我已经掌握了基础知识,现在正在尝试使用数据库。我可以将数据发送到视图没有问题,但是如何将编辑后的内容取回?
我看到很多这样的例子:
public ActionResult Update(MyObject myObject)
{
//do database EFW here
}
我无法弄清楚您如何将数据从网络表单(视图)获取到 myObject。我没有做任何聪明的事情,我在网上遵循了一些示例,但没有人解释这种机制是如何工作的。
对于表单,我使用@Html.BeginForm 和辅助函数 (Html.TextBoxFor) 等来创建我的表单字段。现在的问题是我无法取回已编辑的数据,因此我可以更新我的数据。我点击了正确的控制器动作。
唯一不同的是我的表单 a 是引导对话框中的局部视图。
更新
好吧,我终于在我的操作方法中有一个对象,但是它没有填充关键字段,只有表单上的东西,所以我仍然无法保存它(作为更新),因为我没有知道是哪一个。
我得到这个对象并将其发送到视图
var diary = new mySQLEntities().Diaries.Single(d => d.DRefno == Id);
一切都很好,那么我想做的就是这个,或者类似的东西
public ActionResult DiaryItemUpdate(mymvc.Diary Diary)
{
mySQLEntities db = new mySQLEntities();
db.Diaries.Add(Diary);
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
[Bind(Include = ... )] 不起作用,它只会删除所有属性,甚至是我返回的属性。
我看到的所有示例似乎都在做同样的事情,但它只是不起作用。
我以为这很容易,但事实并非如此。不久前我看了 EF 并出于这个原因放弃了它。它说它使开发变得容易,这对我来说变得更加困难。我明白为什么我坚持使用网络表单这么久了。
【问题讨论】:
-
这完全解释了here。它应该可以帮助你。还可以在该网站上花一些时间来提高您的 MVC 技能。
-
谢谢。我现在已经走得更远了。查看更新
-
您的问题基本上是“如何使用 MVC 和 EF?”我认为您不会在这里找到答案,这是针对特定问题的。如何实现 MVC、EF 和其他东西有很多不同的方法。如果您需要我的个人意见,这份复数指南很长,但包罗万象,使用了最佳实践和模式。 app.pluralsight.com/library/courses/…
-
您的问题与英孚无关。这都是关于 basic model binding 的,它是 MVC 的核心。一旦你明白了,你就会看到它的美妙之处,以及它如何真正让你以 Web 表单无法做到的方式分离你的关注点。 ViewModel pattern 是处理 EF 的好帮手。
标签: c# asp.net-mvc entity-framework asp.net-mvc-5