@ Html.DropDownList不填充验证元素

时间:2017-03-07 12:18:28

标签: c# html asp.net-mvc validation

我在2013年的工作室中有一个基于C#的MVC项目。

我使用razor语法在网页上有很多字段,其中一些是常规@Html.EditorFor(),其中@class = "form-control"类,其他@Html.DropDownListFor()

我有一个模型,可以让我为表单验证添加数据注释。我正在使用实体框架从SQL中引入我的区域,我将这些显示为下拉列表。这一切都很好,它纯粹是显示验证消息的问题。

请查看我用于创建这些代码的以下代码示例。

这是我的模特......

namespace MySystem.Models
{
    [MetadataType(typeof(CRecord_Buddy))]
    public partial class CRecord
    {

     // properties used to pull back and display the name etc instead on an   id in dropdown boxes.

    [Required(ErrorMessage = "Select District.")]
    public string DistrictName { get; set; }


 public class CRecord_Buddy
    {
        [Required(ErrorMessage = "Please enter a Surname.")]
        public string Surname { get; set; }

        ...
    }
 }

}

我的create.cshtml页面如下所示......

//code for Surname 
 @Html.EditorFor(model => model.client.Surname, new { htmlAttributes = new { @class = "form-control" } })
 @Html.ValidationMessageFor(model => model.client.Surname, "", new { @class = "text-danger" })
 @Html.ValidationMessage("Surname", "*", new { @class = "text-danger" })

//code for district
 @Html.DropDownListFor(model => model.client.District, new SelectList(Model.allDistricts, "ID", "District1", 1), "- Select District -")
 @Html.ValidationMessage("DistrictName", "*", new { @class = "text-danger" })
 @Html.ValidationMessageFor(model => model.client.District, "", new { @class = "text-danger" })

下面是验证开始时显示内容的图像......

enter image description here enter image description here

从上面的图片中可以看出,验证适用于@ Html.EditorFor项,但不适用于@ Html.Dropdownlistfor项。这些在填充验证方面都设置相同但我似乎无法使下拉列表项正常工作。

欢迎任何建议。

2 个答案:

答案 0 :(得分:0)

必需属性位于DistrictName而不是District。 这个原因验证结果不可见。

答案 1 :(得分:0)

尝试定义如下所示:

//code for district
@Html.DropDownListFor(model => model.client.DistrictName, new SelectList(Model.allDistricts, 
    "ID", "District1", 1), "- Select District -")
@Html.ValidationMessage("DistrictName", "*", new { @class = "text-danger" })
@Html.ValidationMessageFor(model => model.client.DistrictName, "", new { @class = "text-danger" })

希望这会有所帮助......