Asp.net mvc 4 如何将默认选择输入selectlist MVC
我需要使用dropdownlist将razor和相关对象转换为模型对象 我想保留对象的默认选定值,但没有成功 有谁能建议我实现这一点的最佳方法是什么——在DTO属性和控制器操作以及razor语法中保留什么 以下是我目前的资料:Asp.net mvc 4 如何将默认选择输入selectlist MVC,asp.net-mvc-4,razor-2,selectlist,dropdownlistfor,Asp.net Mvc 4,Razor 2,Selectlist,Dropdownlistfor,我需要使用dropdownlist将razor和相关对象转换为模型对象 我想保留对象的默认选定值,但没有成功 有谁能建议我实现这一点的最佳方法是什么——在DTO属性和控制器操作以及razor语法中保留什么 以下是我目前的资料: public class StateDTO { public int ID { get; set; } public string Name { get; set; } } public class RegisterModel
public class StateDTO
{
public int ID { get; set; }
public string Name { get; set; }
}
public class RegisterModel
{
[Required]
[Display(Name = "User name", Order = 2)]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password", Order = 3)]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password", Order = 4)]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
[Display(Name = "Email Address", Order = 1)]
[DataType(DataType.EmailAddress)]
[Required(AllowEmptyStrings = false, ErrorMessage = "Please enter value")]
public string Email { get; set; }
public IEnumerable<SelectListItem> States { get; set; }
public SelectListItem State { get; set; }
}
public ActionResult Register()
{
RegisterModel r = new RegisterModel();
IList<StateDTO> s = new List<StateDTO>();
s.Add(new StateDTO() { ID = 1, Name = "CA" });
s.Add(new StateDTO() { ID = 2, Name = "LA" });
s.Add(new StateDTO() { ID = 3, Name = "AR" });
r.State = new SelectListItem() { Text = s[2].Name, Value = s[2].ID.ToString(), Selected = true };
r.States = new SelectList(s, "ID", "Name",r.State);
return View(r);
}
public类StateDTO
{
公共int ID{get;set;}
公共字符串名称{get;set;}
}
公共类注册器模型
{
[必需]
[显示(Name=“User Name”,订单=2)]
公共字符串用户名{get;set;}
[必需]
[StringLength(100,ErrorMessage={0}的长度必须至少为{2}个字符。”,MinimumLength=6)]
[数据类型(数据类型.密码)]
[显示(Name=“Password”,顺序=3)]
公共字符串密码{get;set;}
[数据类型(数据类型.密码)]
[显示(Name=“确认密码”,顺序=4)]
[比较(“密码”,ErrorMessage=“密码和确认密码不匹配。”)]
公共字符串ConfirmPassword{get;set;}
[显示(Name=“电子邮件地址”,订单=1)]
[数据类型(数据类型.电子邮件地址)]
[必需(AllowEmptyStrings=false,ErrorMessage=“请输入值”)]
公共字符串电子邮件{get;set;}
公共IEnumerable状态{get;set;}
公共SelectListItem状态{get;set;}
}
公众行动结果登记册()
{
RegisterModel r=新的RegisterModel();
IList s=新列表();
s、 添加(newstatedto(){ID=1,Name=“CA”});
s、 添加(newstatedto(){ID=2,Name=“LA”});
s、 添加(newstatedto(){ID=3,Name=“AR”});
r、 State=new-SelectListItem(){Text=s[2]。Name,Value=s[2]。ID.ToString(),Selected=true};
r、 状态=新的选择列表(s,“ID”,“Name”,r.State);
返回视图(r);
}
视图包含以下相关内容:
<div class="editor-label">
@Html.LabelFor(model => model.State)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.State, Model.States)
@Html.ValidationMessageFor(model => model.State)
</div>
@LabelFor(model=>model.State)
@DropDownListFor(model=>model.State,model.States)
@Html.ValidationMessageFor(model=>model.State)
请建议我应该将什么更改为模型对象、控制器和razor视图,以实现下拉列表的默认选择。。。任何最好的方法
谢谢你我已经按照下面的链接修改了这些内容,并且成功了 在模型中,更改了属性类型,如下所示:
public IEnumerable<SelectListItem> States { get; set; }
public int State { get; set; }
<div class="editor-label">
@Html.LabelFor(model => model.State)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.State, Model.States)
@Html.ValidationMessageFor(model => model.State)
</div>
public IEnumerable状态{get;set;}
公共int状态{get;set;}
控制器操作:
IList<StateDTO> s = new List<StateDTO>();
s.Add(new StateDTO() { ID = 1, Name = "CA" });
s.Add(new StateDTO() { ID = 2, Name = "LA" });
s.Add(new StateDTO() { ID = 3, Name = "AR" });
r.State = 3;
r.States = new SelectList(s, "ID", "Name",3);
IList s=新列表();
s、 添加(newstatedto(){ID=1,Name=“CA”});
s、 添加(newstatedto(){ID=2,Name=“LA”});
s、 添加(newstatedto(){ID=3,Name=“AR”});
r、 状态=3;
r、 状态=新的选择列表,“ID”,“名称”,3;
意见如下:
public IEnumerable<SelectListItem> States { get; set; }
public int State { get; set; }
<div class="editor-label">
@Html.LabelFor(model => model.State)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.State, Model.States)
@Html.ValidationMessageFor(model => model.State)
</div>
@LabelFor(model=>model.State)
@DropDownListFor(model=>model.State,model.States)
@Html.ValidationMessageFor(model=>model.State)
它工作了…得到了默认选择
多谢各位