ASP.NET MVC - Как заполнить выпадающий список другой моделью?
Один называется PropertyModel
а другой называется PropertyTypeModel
, PropertyModel
содержит 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
читает из базы данных и создает список с (на данный момент) двумя значениями, "дом" и "квартира". в представлении, где мне нужно выбрать тип свойства из 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
? Я не смог найти никакой информации о том, как этого добиться. Как "прочитать" модель типа в модель свойств?
Пожалуйста, помогите, я был в этом часами. Если это вообще возможно, код для этого, это было бы здорово.
1 ответ
Ты пытался
<%= Html.DropDownListFor(m => m.PropertyType.PropertyType, Model.PropertyType.PropertyTypeSelectList(), "Choose one") %>