2011-07-28 48 views
4

請幫我。剃刀:@ Html.HiddenFor()需要關閉驗證

我有一個類:

public class Product 
{ 
    ... 

    // NOT REQUIRED! 
    public virtual Category Category{ get; set; } 
} 

但是,當在一個視圖中創建

@Html.HiddenFor(model => model.Category.Id), or 
@Html.Hidden("model.Category.Id", model => model.Category.Id) 

剃刀增加驗證屬性這一點。

  1. 如何關閉它? (在模型中,在視圖中)
  2. 如果一個屬性具有屬性[必需],如何關閉驗證事件?

我發現這不是一個剃鬚刀問題,它是在MVC的某個地方。 即使我設法將「Category.Id」value =「」傳遞給服務器,TryModelUpdate()將失敗 - 它需要設置「Category.Id」,但在我的模型中不需要。

爲什麼如此?

回答

0

設置隱藏,如:

@Html.Hidden("CategoryIdHidden", model => model.Category.Id) 

和處理貼出隱藏值從模型中分離結合的東西...我認爲驗證是特定的用戶界面,而不是具體產品型號,所以它不會驗證類別ID。

或者,在隱藏中提供默認值「0」。如果category.ID的類型爲int,那麼值「」「可能不會正確計算,因此它的值爲null,因此它是錯誤的。

HTH。