ASP.NET MVC - 如何使用其他模型填充下拉列表?

时间:2011-07-22 18:11:33

标签: asp.net-mvc model-view-controller drop-down-menu models

一个称为PropertyModel,另一个称为PropertyTypeModelPropertyModel包含PropertyTypeModel,您可以在下面看到:

public class PropertyModel  {
    public int PropertyID { get; set; }

    public PropertyTypeModel PropertyType { get; set; }

    [DataType(DataType.Text)]
    [DisplayName("Property name")]
    public string PropertyName { get; set; }
}

PropertyTypeModel就是这样:

public class PropertyTypeModel {
    public int PropertyTypeID { get; set; }
    [DataType(DataType.Text)]

    [DisplayName("Property type")]
    public string PropertyType { get; set; }

    public static List<SelectListItem> PropertyTypeSelectList()
    {
        using (Properties dataContext = new Properties())
        {
            return (from pt in dataContext.PropertyTypes
                    select new SelectListItem
                    {
                        Value = pt.PropertyTypeID.ToString(),
                        Text = pt.PropertyTypeName
                    }).ToList();
        }          
    }
}

PropertyTypeModel从数据库读取,并创建一个列表(现在)两个值,“house”和“apartment”。在视图中,我需要从dropdownlist中选择属性类型,我能够这样做的唯一方法是将列表直接硬编码到视图中,如下所示:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<PropertyApplication.Models.PropertyModel>" %>
....
....
<%= Html.DropDownListFor(m => m.PropertyType.PropertyType,  new[] {
new SelectListItem { Text = "House",
Value = "House" },
new SelectListItem { Text = "Apartment",
Value = "Apartment" }
}
, "Choose one") %>

我不希望这样,因为在数据库中进行的任何更改(例如添加其他类型的属性)将意味着在视图中重新编码列表。此外,这个代码是这样给我的,我需要使用PropertyTypeModel

我的问题是:如何使用dropdownlist PropertyTypeModel填充PropertyTypeSelectList for?我无法找到有关如何实现这一目标的任何信息。如何将类型模型“读取”到属性模型中?

请帮助,我已经在这几个小时了。如果可能的话,这样做的代码就会很棒。

1 个答案:

答案 0 :(得分:1)

你试过吗

<%= Html.DropDownListFor(m => m.PropertyType.PropertyType,  Model.PropertyType.PropertyTypeSelectList(), "Choose one") %>