下拉列表未按要求显示但标记为需要
Drop down list not showing as required but is marked as required
我对 MVC 的下拉列表有疑问。但是文本框没有问题,只有下拉列表。我想首先说我在这上面花了很多时间,但仍然没有解决方案。我还想提一下,这些属性标有 [Required] 属性。在视图中,我还有jquery.min、jquery.validate.min、jquery.validate.unobstrusive.min。
我也有 :
<add key="ClientValidationEnabled" value="true">
<add key="UnobtrusiveJavaScriptEnabled" value="true">
视图模型代码:
public class RegistrationViewModel
{
[Required(ErrorMessage = "State is required.")]
public IEnumerable<SelectListItem> State { get; set; }
}
在视图中:
<div>
@Html.DropDownListFor(model => model.StateSelectedItem, (List<SelectListItem>)Model.State)
@Html.ValidationMessageFor(model => model.State)
</div>
有什么想法、想法、评论吗?
谢谢
当您呈现 razor 视图时,SELECT 元素的 name
属性 值将为 "StateSelectedItem" 并且将具有所选选项的值。因此,您应该将 Required
数据注释应用于 属性。
public class RegistrationViewModel
{
[Required(ErrorMessage = "State is required.")]
public string StateSelectedItem {set;get;}
public IEnumerable<SelectListItem> State { get; set; }
}
并且在您看来,您不需要再次将 Model.State
属性 转换为 List<SelectListItem>
,因为它已经是 List<SelectListItem>
类型。同时为 StateSelectedItem
属性.
创建验证消息
@model RegistrationViewModel
@using(Html.BeginForm())
{
<div>
@Html.DropDownListFor(x => x.StateSelectedItem, Model.State, "Select one")
@Html.ValidationMessageFor(x => x.StateSelectedItem)
</div>
}
假设您将一些项目加载到视图模型的 State 集合 属性,这应该可行。
public ActionResult Register()
{
var vm = new RegistrationViewModel();
vm.State= new List<SelectListItem> {
new SelectListItem { Value="MI", Text="Michigan" },
new SelectListItem { Value="NY", Text="NewYork" },
};
return View(vm).
}
我对 MVC 的下拉列表有疑问。但是文本框没有问题,只有下拉列表。我想首先说我在这上面花了很多时间,但仍然没有解决方案。我还想提一下,这些属性标有 [Required] 属性。在视图中,我还有jquery.min、jquery.validate.min、jquery.validate.unobstrusive.min。 我也有 :
<add key="ClientValidationEnabled" value="true">
<add key="UnobtrusiveJavaScriptEnabled" value="true">
视图模型代码:
public class RegistrationViewModel
{
[Required(ErrorMessage = "State is required.")]
public IEnumerable<SelectListItem> State { get; set; }
}
在视图中:
<div>
@Html.DropDownListFor(model => model.StateSelectedItem, (List<SelectListItem>)Model.State)
@Html.ValidationMessageFor(model => model.State)
</div>
有什么想法、想法、评论吗? 谢谢
当您呈现 razor 视图时,SELECT 元素的 name
属性 值将为 "StateSelectedItem" 并且将具有所选选项的值。因此,您应该将 Required
数据注释应用于 属性。
public class RegistrationViewModel
{
[Required(ErrorMessage = "State is required.")]
public string StateSelectedItem {set;get;}
public IEnumerable<SelectListItem> State { get; set; }
}
并且在您看来,您不需要再次将 Model.State
属性 转换为 List<SelectListItem>
,因为它已经是 List<SelectListItem>
类型。同时为 StateSelectedItem
属性.
@model RegistrationViewModel
@using(Html.BeginForm())
{
<div>
@Html.DropDownListFor(x => x.StateSelectedItem, Model.State, "Select one")
@Html.ValidationMessageFor(x => x.StateSelectedItem)
</div>
}
假设您将一些项目加载到视图模型的 State 集合 属性,这应该可行。
public ActionResult Register()
{
var vm = new RegistrationViewModel();
vm.State= new List<SelectListItem> {
new SelectListItem { Value="MI", Text="Michigan" },
new SelectListItem { Value="NY", Text="NewYork" },
};
return View(vm).
}