2011-03-04 64 views
13

我使用下面的代碼爲使用ASP.NET MVC 3的模型呈現編輯器,它的工作原理非常完美,除了我不希望用戶看到或編輯我的對象中的「Id」字段。Html.EditorForModel和編輯中的隱藏元素

<% using (Html.BeginForm()) 
    { %> 
    <%: Html.ValidationSummary(true, "Your input has errors, please correct and try again") %> 
    <%: Html.EditorForModel(Model)%> 

    <input type="submit" value="Update" /> 
<% } %> 

在我的模型的ID字段我有以下

[Display(AutoGenerateField = false)] 
public int Id{ get; private set; } 

這理所當然是我認爲基於「AutoGenerateField」參數的說明會工作。但是這不起作用。我不希望有打造只爲這一個小小的古怪整個編輯....

回答

20

使用[ScaffoldColumn(false)]隱藏字段

+1

隨着告誡該字段不只是隱藏,而是完全從渲染視圖中省略。因此它不會以POST請求作爲表單數據返回。 – ProfK 2012-03-28 11:44:05

+0

如果你需要你的ID綁定到你的發佈請求,我會看看Darin Dimitrov的解決方案。 – 2012-07-10 18:16:06

18

您可以使用[HiddenInput]屬性:

​​
+0

'HiddenInput'可能是比ScaffoldColumn(false)更好的選擇,因爲控制器的操作可能要根據提交的Id來關聯數據庫中的任何內容。 – 2013-05-14 21:24:22