2013-10-31 67 views
1

您好我正在使用Editorfor()來製作一個小窗體,將視圖模型提交給控制器。 Editorfor()很好地打印模型的輸入字段,但它也打印主鍵字段。所以我想隱藏主鍵字段。如何使用編輯器隱藏主鍵輸入字段

@Html.EditorFor(m=>m.viewmodel) 

這是我的標記。

@Html.HiddenFor(m => m.viewmodel.Id); 
@Html.EditorFor(m=>m.viewmodel) 

已嘗試此操作,但不起作用。我想直接對模型做一個方法,但我使用EF Designer,所以我不知道從哪裏開始。請給我一個建議。

回答

0

使用自定義編輯器模板。例如:

MyViewModel.cshtml(存儲在〜/查看/共享/ EditorTemplates文件夾結構類似的局部視圖):

@model MyViewModel 
@Html.HiddenFor(m => m.Id) 
@Html.EditorFor(m => m.Property1) 
@Html.TextboxFor(m => m.Property2) 
@Html.TextAreaFor(m => m.Property3) 
// Whatever else you want in the template 

然後你就可以在你看來只是叫EditorFor您的手機型號需要使用它,MVC會知道使用您的自定義模板:

@Html.EditorFor(m => m.MyViewModel) 

要使用不是基於該類型的名稱自定義顯示模板,您還可以使用[UIHint]屬性爲DES cribed這裏:http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html

4

試試這個:

[HiddenInput(DisplayValue = false)] 
public int ProductID { get; set; 
+0

如何用EF Designer做同樣的事情? – tamikoon

+0

看這裏(底部)http://www.asp.net/mvc/tutorials/older-versions/models-%28data%29/validation-with-the-data-annotation-validators-cs – WannaCSharp

+0

或在這裏http: //stackoverflow.com/questions/4915957/using-system-componentmodel-dataannotations-with-entity-framework-4-0/ – WannaCSharp

0

不要爲你的關鍵屬性創建的任何領域。沒有現場檢查,驗證沒有什麼可抱怨的。稍後,您可以爲控制器中的主鍵提供一個值。