用于绑定到模型

本文关键字:模型 绑定 用于 | 更新日期: 2023-09-27 17:55:01

我是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; }
}

相关的Register View Model部分是:

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>

用于绑定到模型

假设您有两个实体,分别是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,然后使用下拉列表,如下所示:

视图:

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