2011-09-29 32 views
9

任何想法爲什麼下面的下拉列表不會驗證必填字段爲int類型(下面的「標題」字段)?MVC3 DropDownList無法通過[必需的]類字段驗證爲int類型嗎?

[Required]    // This works! 
    [Display(Name = "Name")] 
    public string Name { get; set; } 

    [Required]    // This doesn't work 
    [Display(Name = "Title")] 
    public int TitleId { get; set; } 



    <div class="editor-label"> 
     @Html.LabelFor(model => model.Name, "Name") 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Name) 
     @Html.ValidationMessageFor(model => model.Name, "This can't be blank!") 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.TitleId, "Title") 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownListFor(model => model.TitleId, (SelectList)ViewBag.TitleId, String.Empty) 
     @Html.ValidationMessageFor(model => model.TitleId) 
    </div> 

enter image description here

+0

當您發佈的數據,並TitleId已設定值? –

+0

如果int?仍然無法工作,也許你爲你的下拉菜單設置了默認值?即:(0,「所有記錄」)而不是空值? – Iridio

+0

不行...我把它設置爲「 - 選擇我 - 」,不幸的是沒有工作。 – JaJ

回答

21

this work item,當ViewBag選擇列表的使用相同的名稱所討論的現場客戶端驗證休息。 (即無論是在你的情況是TitleId。)

試試這個:

@Html.DropDownListFor(model => 
    model.TitleId, (SelectList)ViewBag.TitleIdList, String.Empty) 

與你的SelectList更名爲相應TitleIdList

+0

$$$$$感謝帖子!就是這樣! – JaJ

3

[Required]只適用於爲空的對象和INT不能爲空。 嘗試使用int?代替int

+0

不行!這是奇怪的。什麼讓我感到困惑的是我有另一個可空類型int的下拉列表: [必需] [顯示(名稱=「訂單ID」)] 公共可空 OrderId {get;組; } 如果它爲空(「OrderId」),驗證將捕獲它。但是,在我的對象綁定模型(數據庫)中,該值(「OrderId」)可以爲空,而數據庫中的「標題」不可爲空。這是唯一的區別,除非我需要生成一個新的視圖,因爲我將該類型更改爲int ?. 還有其他想法嗎? – JaJ

+0

也許你可以使用[數據註釋擴展的最小屬性](http://dataannotationsextensions.org/Min/Create)? – Panos

1

或者試試這個。在你的site.css文件中添加以下代碼

select.input-validation-error { 
    /*border: 1px solid #e80c4d;*/ 
    /*Other styles*/ 
} 

這將顯示在下拉邊框顏色爲紅色,當它是空的。

,並鑑於頁:

@Html.DropDownListFor(model => model.TitleID, Model.TitleIDList, "-- Select --", new { @class = "dropdownlist" }) @Html.ValidationMessageFor(model => model.TitleID, "This can't be blank") 
相關問題