DropDownListFor绑定到模型

时间:2015-06-09 17:26:01

标签: c# asp.net-mvc

我是asp.net mvc的新手,尽管有几次搜索无法成功地绕过视图中的下拉列表。

具体而言,我正在创建一个首先是实体框架代码的项目。

我有一个表单,要求用户可以选择他们拥有的许可证类型。

非常感谢帮助或帮助。我想在视图中创建一个DropDownListFor帮助器,以启用LicenceType的下拉列表。

与许可证类型相关的GRCMember模型部分是:

public class GRCMember
{
    [Column(TypeName = "int")]
    public int? LicenceTypeId { get; set; }
}

许可证类型模型是:

public class LicenceType
{
    public int LicenceTypeId { get; set; }
    [StringLength(150)]
    [Column(TypeName = "nvarchar")]
    public String Type { get; set; }
    [Column(TypeName = "bit")]
    public bool? Dormant { get; set; }
    public virtual ICollection<GRCMember> GRCMembers { get; set; }
}

相关的“注册视图模型”部分为:

public class RegisterViewModel
{
    [Display(Name = "Licence Type")]
    public int? SelectedLicenceTypeId { get; set; }
}

get控制器方法是:

[AllowAnonymous]
[HttpGet]
public ActionResult Register()
{
    return View();
}

最后,视图的下拉部分是:

@model GRCWebApp.Models.RegisterViewModel
<div class="col-md-3 col-md-offset-1">
    @Html.LabelFor(model => model.SelectedLicenceTypeId, htmlAttributes: new { @class = "control-label" })
    @Html.EditorFor(model => model.SelectedLicenceTypeId, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.SelectedLicenceTypeId, "", new { @class = "text-danger" })
</div>

1 个答案:

答案 0 :(得分:1)

假设您有两个名为Person和City的实体。然后,您将使用ViewModel在模型中填充这两个实体,如下所示:

<强> PersonViewModel:

public Person Person { get; set; }
public IEnumerable<City> Cities { get; set; }


控制器当然返回ViewModel:

<强>控制器:

public ViewResult Create()
{
    PersonViewModel model = new PersonViewModel
    {
        Person = new Person (),
        Cities = repository.Cities.ToList()
    };
    return View(model);
}


您应该将ViewModel传递给View,然后使用Dropdownlist,如下所示:

查看:

@model Project.WebUI.Models.PersonViewModel
...
@Html.LabelFor(m => m.Person.City)
@Html.DropDownListFor(m => m.Person.City, new SelectList(Model.Cities, "CityID", "CityName"), "---- Select ----")

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