MVC默认编辑视图会增加模型的id属性吗?无法弄清楚原因。 。

时间:2014-06-07 18:55:35

标签: entity-framework debugging model-view-controller

我试图学习网页开发,我敢打赌,这是一个简单的问题,我忽略了一些明显的问题。

在我的默认crud编辑控制器(使用MVC框架生成)中,我使用我的EntityFramework的dbContext从localDB实例中检索我的模型。这被发送到视图。在控制器调用return View(model)之前的调试器中,我可以看到Id设置为2.

当[post]编辑控制器被触发时,我看到身份属性是3.我想弄明白为什么所以我改变了View以显示我的Id属性,我看到它一旦我渲染了它就是3页。上次我看到它的房产是2,现在是3。

我不知道如何挂钩在我发送模型和呈现视图之间发生的任何逻辑。

任何人都可以帮我学习如何调试这个,这样我就可以弄清楚当我将模型传递到视图中时我的Id属性会增加吗?

2 个答案:

答案 0 :(得分:1)

我不知道EntityFramework是如何工作的,但我使用过CakePHP。我的建议是这样的:

  1. 通常PHP框架具有调试模式,您可以在配置文件中设置(打开或关闭它)。通常,执行的操作堆栈也会以调试模式显示,或者有一种简单的方法可以执行此操作。例如CakePHP中还存在函数调试($ yourVariable);试着搜索某事。类似

  2. 它接缝不是编辑发生但新行插入数据库。检查您的数据库。我建议调试为编辑操作传递的列的id,并检查数据库中是否存在相同的id。

  3. 希望有所帮助。

答案 1 :(得分:0)

我明白了。在这里发布任何遇到我问题的人。

我尝试在不使用任何htmlhelper方法的情况下将整个模型转储出来。 (在我的情况下,我在说:Html.HiddenFor帮助者)当我这样做时,我看到模型中的值是我所期望的。所以我开始研究为什么辅助方法可能被打破。谷歌在这里为我工作:)

原来,当辅助方法运行时,他们首先检查ModelState字典中的所需值。在我的情况下,我一直在寻找模型对象中的值以及ModelState字典,因为名称很常见:Id。

要在调用return View(model)之前解决问题,我调用ModelState.Clear()以确保字典中没有冲突的值。这样做会导致我的页面正确呈现。