2014-05-19 10 views
1

我有这个dropDownListFor:验证Html.DropDownListFor,不发送detault值时httpPost

@Html.DropDownListFor(m => m.ChoosenThemeSetting, Model.ThemeSettings.Select(k => new SelectListItem { Text = k.ChoosenTheme, Value = k.ChoosenTheme, }), "-- Select here --", new { @class = "form-control", id = "colorIfZero" }) 

在我设置的代码“ - 选择在这里 - ”作为默认值。如果我没有选择除dropDown之外的其他值,默认值将发布到我的[httpPost] - 方法中。

有没有某种方法来证明这一点。如:如果选定的值是我的默认值,给我一个验证消息,以从我的dropDown中选择somthing。成为我的默认“ - 选择这里 - ”我不想发送到我的[httpPost]

+0

检查这个 http://stackoverflow.com/questions/23148038/how-to-set-state-of-dropdownlistfor-default-值/ 23197318#23197318 – Divyek

回答

0

问题解决了感谢这个链接:http://forums.asp.net/t/1580133.aspx?DropDownListFor+validation。谢谢你ravikatha!

通过设置模型类,持有物业的ChoosenThemeSetting到(在课堂上)

[Required] 
    [DisplayName("")] 
    public string ChoosenThemeSetting { get; set; } 

,然后改变我的下拉码本(注意的String.Empty线)

@Html.DropDownListFor(m => m.ChoosenThemeSetting, Model.ThemeSettings.Select(k => new SelectListItem { Text = k.ChoosenTheme, Value = k.ChoosenTheme, }), string.Empty, new { @class = "form-control", id = "colorIfZero" }) 

一切正常! 我现在得到一个validationmessage来选择一些值从我的下拉

+0

当然,我不必将默认值保留为String.Empty。将其更改为“ - 选择此处 - ”。并且也是这样的! – user3228992