Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET MVC 5/Entity框架中绑定数据?_C#_Asp.net Mvc_Entity Framework_Asp.net Mvc 5 - Fatal编程技术网

C# 如何在ASP.NET MVC 5/Entity框架中绑定数据?

C# 如何在ASP.NET MVC 5/Entity框架中绑定数据?,c#,asp.net-mvc,entity-framework,asp.net-mvc-5,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我是MVC的新手,从我熟悉的Webforms开始 我已经掌握了基本知识,现在正在尝试使用数据库。我可以将数据发送到视图没有问题,但如何将编辑的数据返回 我看到了很多这样的例子: public ActionResult Update(MyObject myObject) { //do database EFW here } 我无法确定如何将数据从web表单(视图)获取到myObject。我并没有做任何聪明的事情,我已经在网上跟随了一些例子,但没有人解释这个机制是如何工作的 对于表单,我使

我是MVC的新手,从我熟悉的Webforms开始

我已经掌握了基本知识,现在正在尝试使用数据库。我可以将数据发送到视图没有问题,但如何将编辑的数据返回

我看到了很多这样的例子:

public ActionResult Update(MyObject myObject)
{
    //do database EFW here
}
我无法确定如何将数据从web表单(视图)获取到
myObject
。我并没有做任何聪明的事情,我已经在网上跟随了一些例子,但没有人解释这个机制是如何工作的

对于表单,我使用
@Html.BeginForm
和助手函数(
Html.TextBoxFor
)等创建表单字段。问题是现在我无法取回已编辑的数据,因此我可以更新我的数据。我击中了正确的控制器动作

唯一不同的是我的表单a是引导对话框中的局部视图

更新

我终于在我的action方法中有了一个对象,但是它没有填充key字段,只有表单上的内容,所以我仍然无法保存它(作为更新),因为我不知道它是哪一个

我获取并发送此对象到视图

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一段时间后,出于这个原因放弃了它。它说这让开发变得容易,这让我更难。我可以理解为什么我这么长时间都坚持使用web表单。

如果您希望返回任何传入的属性,则需要在表单中实例化它们。您需要将对象的ID添加为隐藏的表单元素:

@Html.HiddenFor(model => model.ID)

这将确保您发送到视图的对象的ID被发回。

这一点已经得到了准确的解释。它应该对你有帮助。也要花一些时间在那个网站上复习你的MVC技能。谢谢。我现在更进一步了。请参阅更新您的问题基本上是“如何使用MVC和EF?”我不认为您会在这里找到答案,这是针对特定问题的。在如何实现MVC、EF和其他方面有很多不同的方法。如果你想听听我的个人意见,这本pluralsight指南很长,但包罗万象使用了最佳实践和模式。您的问题与EF无关。这就是MVC的核心所在。一旦你明白了这一点,你就会看到它的美妙之处,以及它如何真正让你以webforms无法做到的方式来分离你的关注点。在处理EF时,它是一个大帮手。好吧,这很有趣。我现在已经看了4/5个视频,但没有一个这样做。如果我有10个或20个隐藏值(差)示例会怎么样?我没有看到atm的EF比我自己做和抛弃EF更好。这个答案会让OP偏离正轨。使用
@Html.HiddenFor(model=>model.ID)
的目的是使模型的ID(如传递给视图的对象)不会显示在页面上。您遇到的任何示例都很可能使用viewModel方法来隐藏数据,这样数据就永远不会到达表单。Adam,使用
@Html.HiddenFor(model=>model.ID)
的意义确实在于它不会显示在页面上,但它也是如此,它通过ViewModel发送回控制器,允许您使用该Id从数据库中获取实际对象,并更新值。