7

在 MVC3 中,数据注释可用于加速 UI 开发和验证;IE。

    [Required]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "New password")]
    public string NewPassword { get; set; }

但是,如果对于移动应用程序,没有字段标签,只有从数据库填充的下拉列表。我将如何以这种方式定义它?

    [Required]
    [DataType(DataType.[SOME LIST TYPE???])]
    [Display(Name = "")]
    public string Continent { get; set; }

最好不要使用这种方法吗?

4

2 回答 2

9

像这样更改您的 ViewModel

public class RegisterViewModel
{
   //Other Properties

   [Required]
   [Display(Name = "Continent")]
   public string SelectedContinent { set; get; }
   public IEnumerable<SelectListItem> Continents{ set; get; }

}

并在您的GETAction 方法中,设置从您的数据库中获取数据并设置您的 ViewModel 的 Continents Collection 属性

public ActionResult DoThatStep()
{
  var vm=new RegisterViewModel();
  //The below code is hardcoded for demo. you may replace with DB data.
  vm.Continents= new[]
  {
    new SelectListItem { Value = "1", Text = "Prodcer A" },
    new SelectListItem { Value = "2", Text = "Prodcer B" },
    new SelectListItem { Value = "3", Text = "Prodcer C" }
  }; 
  return View(vm);
}

并在您的View( DoThatStep.cshtml) 中使用此

@model RegisterViewModel
@using(Html.BeginForm())
{
  @Html.ValidationSummary()

  @Html.DropDownListFor(m => m.SelectedContinent, 
               new SelectList(Model.Continents, "Value", "Text"), "Select")

   <input type="submit" />
}

现在这将使您的 DropDown 必填字段。

于 2012-08-17T19:22:09.520 回答
3

如果要强制选择 DropDown 中的元素,请使用[Required]要绑定到的字段上的属性:

public class MyViewModel
{
    [Required]
    [Display(Name = "")]
    public string Continent { get; set; }

    public IEnumerable<SelectListItem> Continents { get; set; }
}

在您看来:

@Html.DropDownListFor(
    x => x.Continent, 
    Model.Continents, 
    "-- Select a continent --"
)
@Html.ValidationMessageFor(x => x.Continent)
于 2012-08-17T19:22:13.810 回答