ASP.NET MVC PresentationModel Binding to ComboBoxes stays em



你好,我正在学习用 ASP.NET 编写MVC风格。我正在尝试用我的演示模型填充组合框,但不知何故它保持为空。

我正在使用 ASP 标记助手:

View (Index.cshtml)

@model Week3_oef2_ITPro.PresentationModel.PMRegistration
<h2>New Registration</h2>
<h4>Registration</h4>
<form asp-controller="Register" asp-action="" method="post">
   <table>
        <tr>
            <td>Organization</td>
            <td class="form-group">
                <select asp-for="OrgId.Id" asp-items="@Model.Org" class="form-group" />
            </td>
        </tr>
        <tr><td><input type="submit" /></td></tr>
   </table>
</form>

PresentationModel (PMRegistration.cs)

public class PMRegistration
{
    public Organization OrgId { get; set; }
    public List<SelectListItem> Org { get; set; }
}

模型(组织.cs)

public class Organization
{
    public int Id { get; set; }
    public string Name { get; set; }
}

数据(初始化所有对象的位置)

public class Data
{
    private static List<Session> sessions = new List<Session>();
    private static List<Organization> organizations = new List<Organization>();
    private static List<Device> devices = new List<Device>();
    static Data()
    {
        organizations.Add(new Organization() { Id = 1, Name = "Howest" });
        organizations.Add(new Organization() { Id = 2, Name = "Vives" });
        organizations.Add(new Organization() { Id = 3, Name = "HoGent" });
        organizations.Add(new Organization() { Id = 4, Name = "HoLimburg" });
        organizations.Add(new Organization() { Id = 4, Name = "De blauwe smurfen" });
        devices.Add(new Device() { Id = 1, Name = "Laptop" });
        devices.Add(new Device() { Id = 2, Name = "Tablet" });
        devices.Add(new Device() { Id = 3, Name = "Apple Watch" });
    }
    public static List<Device> GetDevices()
    {
        return devices;
    }
    public static List<Organization> GetOrganizations()
    {
        return organizations;
    }
}
控制器

(寄存器控制器.cs)

public class RegisterController : Controller
{
    // GET: /<controller>/
    [HttpGet]
    public IActionResult Index()
    {
        PMRegistration pm = new PMRegistration();
        pm.OrgId = new Organization();
        pm.Org = ConverToListItems(Data.GetOrganizations());
        return View(pm);
    }
    #region methodes
    private List<SelectListItem> ConverToListItems(List<Organization> data)
    {
        List<SelectListItem> items = new List<SelectListItem>();
        foreach (var item in data)
        {
            items.Add(new SelectListItem() { Text = item.Name, Value = item.Id.ToString() });
        }
        return items;
    }
    #endregion
}

SELECT 元素的 HTML 标记是错误的。SELECT 元素需要一个结束标记。

它应该是

<select asp-for="OrgId.Id" asp-items="@Model.Org" class="form-group"></select>

相关内容

  • 没有找到相关文章

最新更新