Asp.net-Mvc

MVC 3 模型 ID 屬性中 ScaffoldColumn 屬性設置為 False 的真正優勢是什麼

  • March 31, 2021

我是 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()

好吧,您不希望它作為可編輯欄位搭建,但您當然希望它在表單中,正如您所注意到的。解決方案是手動將其添加為視圖中的隱藏欄位。像這樣的東西:

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

您可以為此使用數據註釋並使用:

[HiddenInput(DisplayValue=false)]

這樣,您的欄位將使用視圖中的隱藏輸入顯示。無需進行任何更改,視圖將知道如何顯示它。

引用自:https://stackoverflow.com/questions/10493066