Asp.net mvc 4 如何将默认选择输入selectlist MVC

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

我需要使用dropdownlist将razor和相关对象转换为模型对象

我想保留对象的默认选定值,但没有成功

有谁能建议我实现这一点的最佳方法是什么——在DTO属性和控制器操作以及razor语法中保留什么

以下是我目前的资料:

 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)
它工作了…得到了默认选择

多谢各位