2011-12-05 36 views
2

我試圖把DropDownList驗證工作。mvc 3查看數據驗證

模型

[Required(ErrorMessage = "this field is required")] 
public int ObjectTypeID { get; set; } 

鑑於:

<div class="editor-field"> 
@Html.DropDownList("ObjectTypeID", string.Empty) 
@Html.ValidationMessageFor(model => model.ObjectTypeID) 
</div> 

如果用戶離開的選擇空我希望客戶端驗證報警。但是這不會發生。 可以做些什麼?

回答

0

系統類型的行爲是它們在初始化時必須有一個值。整數的值爲「0」。更改模型接受一個可空INT:

public int? ObjectTypeID { get; set; } 
+0

我明白匹配驗證。但在這種情況下,我想防止空值,並有驗證強制客戶端選擇一個值。但驗證不起作用。或許問題出在'string.Empty',它的行爲就像是一個值(?) – niron

+0

一個整數將永遠不會爲空,它將始終有一個值爲0.您還可以使用正則表達式驗證器來確保它是一個整數。 –

+0

您也可以推出自己的自定義範圍驗證程序:http://msdn.microsoft.com/en-us/vs2010trainingcourse_aspnetmvccustomvalidation_topic2 –

0

只是想知道,但爲什麼不使用DropDownListFor?

對於客戶端驗證工作,我認爲你需要打開ClientValidationEnabled & UnobtrusiveJavaScriptEnabled在web.config中爲您的項目,我相信你也需要引用您的網頁上jquery.validate.unobtrusive.min.js腳本?

0

1)您沒有加載你的下拉列表

2)使用DropDownListFor爲了使用DDL