如何更改ErrorMessage MVC DropDownListFor

时间:2013-10-24 19:56:20

标签: asp.net-mvc html.dropdownlistfor

我有一个包含简单属性的类。

public class Projects
    {

        private static readonly WebWideMediaDataContext _ctx = new WebWideMediaDataContext();


        public string Title { get; set; }


        public string Description { get; set; }


        private readonly List<ProjectCategoryModel> _categories = _ctx.ProjectCategories.GetAll();


        [Required(ErrorMessage = "Please select a project type.")]
        public int SelectedProjectCategoryId { get; set; }

        public IEnumerable<SelectListItem> CategoryList
        {
            get
            {
                var categoryList = _categories.Select(s => new SelectListItem
                                                                {
                                                                    Value = s.CategoryId.ToString(),
                                                                    Text = s.CategoryName
                                                                });

                return DefaultListItem.Concat(categoryList);
            }
        }



        public IEnumerable<SelectListItem> DefaultListItem
        {
            get
            {
                return Enumerable.Repeat(new SelectListItem
                {
                    Value = "select",
                    Text = "Select an Option"
                }, count: 1);
            }
        }


    }

在我看来,我有一个DropDownListFor

 @Html.DropDownListFor(model => model.SelectedProjectCategoryId, Model.CategoryList)

在我点击提交按钮后,我收到了验证错误消息,但没有得到我在模型中手动定义的消息。我收到此错误消息“字段SelectedProjectCategoryId必须是一个数字。”而是我定义的那个“请选择一个项目类型”

有人可以建议我需要修理什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您的验证失败的是Integer数据类型而不是必填字段。

尝试如下:

[Required(ErrorMessage = "Please select a project type.")]
[RegularExpression("\\d+", ErrorMessage = "Please select a project type")]
public int SelectedProjectCategoryId { get; set; }