8

我是 MVC 的新手,当我为代码优先方法构建模型类时,每个键 ID 列都有属性[ScaffoldColumn(false)]集。我这样做是因为我不希望明显地在视图中显示 ID,而且我知道解决此问题的方法是删除包含 ID 字段的每个视图中的 UI 生成的 HTML。

ScaffoldColumn我在模型中使用set to遇到的问题false是在触发视图的 Edit 方法时首先注意到的,并且我收到此错误:Store update, insert, or delete statement影响了意外的行数(0)。当我在调试中运行代码时,ID 属性实际上设置为零,如我的视图编辑HttpPost方法中所示。

ScaffoldColumn我希望有人可以详细说明我的问题,如果没有将 ID 发送到控制器方法(例如在这种情况下为 Edit ),那么在 MVC中具有属性有什么意义HttpPost?我是否应该以旧的方式进行此操作,并删除当该属性未添加到键/外键属性时生成的 MVC 寺庙创建的每个视图中的 HTML 标记?

如果将此属性设置为,我发现的解决方法false是为每个方法添加一个 ID 参数HttpPost,而不是在调用之前设置适当的 ID 属性字段SaveChanges()

4

3 回答 3

4

您可以为此使用数据注释并使用:

[HiddenInput(DisplayValue=false)]

这样,您的字段将使用视图中的隐藏输入显示。无需进行任何更改,视图将知道如何显示它。

于 2016-02-14T10:33:27.163 回答
3

好吧,您不希望它作为可编辑字段搭建,但您当然希望它在表单中,正如您所注意到的。解决方案是手动将其添加为视图中的隐藏字段。像这样的东西:

@Html.HiddenFor(model => model.id)
于 2012-05-08T05:34:10.187 回答
3

[ScaffoldColumn(false)],它只是隐藏了属性。假设您有一个 id 自动递增的属性。用户与此属性没有任何关系。所以用它来隐藏视图中的属性。

于 2018-08-28T17:23:25.837 回答