2011-12-02 70 views
3

我有這樣的代碼:MVC3得到一個「屬性字段是必須的」的錯誤,儘管沒有[必需]屬性

@this.Html.DropDownListFor(vm => vm.FishId, 
    new SelectList(this.Model.Fishies, "FishId", "FishName", this.Model.FishId), "Please Select a Fish") 

@this.Html.ValidationMessageFor(vm => vm.FishId) 

這個模型僅僅是

public int FishId 
{ 
    get; 
    set; 
} 

所以沒有驗證這裏。當我按提交時,我收到一條消息,說The FishId Field is Required.。這是客戶端驗證錯誤。任何想法是什麼造成這個?

如果我更改驗證消息,這樣:

@this.Html.ValidationMessageFor(vm => vm.FishId, "Gotta select a fish, man") 

然後錯誤消息的變化(這是我想要什麼)的下拉列表右側,但驗證摘要仍顯示原始郵件。

我的所有其他的東西,我把驗證和消息無論是作爲RequiredField(...)的屬性,或者在自定義的驗證方法。

怎麼回事,我該如何更改驗證摘要信息?

+0

你的控制器方法是什麼樣的? – brodie

回答

5

不知道如果要禁用驗證或更改錯誤信息。如果是後者,那麼你應該嘗試添加下面的模型。

[Required(ErrorMessage="Gotta select a fish, man")] 
public int FishId {get;set;} 
+0

原來這個效果更好,我曾試過這個,但喜歡這個小丑我是,我已經將它應用於錯誤的視圖模型!歡呼:) – NibblyPig

+0

我基本上有這個確切的設置(這裏在2017年),但我一直得到什麼似乎是默認的「必需」消息,而不是我設置的ErrorMessage。 :( –

11

儘量把INT可空

public int? FishId { get; set; } 

它應該通過驗證,因爲你允許空值

+0

嗯,所以你說MVC會'這不是空的,所以我會把默認驗證'?是否有可能使它不可爲空,但在驗證摘要中定製錯誤消息?否則,我將不得不做一些服務器端驗證。 – NibblyPig

+0

你可以創建你自己的valdiation屬性,所以你可以處理你喜歡DoprDownList驗證應該如何工作的方式。其他方式你必須在服務器端工作。也有RemoteValidation,但我不知道如果可以按照你喜歡的方式工作,因爲我從來沒有用過這樣的東西 – Iridio

+0

很酷,謝謝=) – NibblyPig

1

創建實例,並將其傳遞到打開的結果....

例子:返回視圖( 「添加」,新客戶());

這將使用默認值初始化所有值類型。

相關問題