У меня есть класс с именем Entity
public class Entity
{
public string Name { get; set; }
public Location Place { get; set; }
}
и один класс под названием Location
public class Location
{
public string Country { get; set; }
public string State { get; set; }
public string City { get; set; }
}
One Entity
содержит Location
, поэтому я хочу сгенерировать 3 выпадающих списка для Location
.
Я мог бы сделать это вручную, как
@Html.DropDownListFor(o => o.Country, new [] { new SelectListItem() { Text = "United States", Value="US" } })
<br />
@Html.DropDownListFor(o => o.State, new [] { new SelectListItem() { Text = "Some State", Value="SS" } })
<br />
@Html.DropDownListFor(o => o.City, new[] { new SelectListItem() { Text = "Some city", Value = "City" } })
Но у меня есть несколько мест на моем веб-сайте, которые будут нуждаться в тех же трех выпадающих списках, как Restaurant
, Hotel
и другие классы, которые также имеют Location
. Я попытался создать частичное представление, которое запускает новую форму, но я получаю исключение:
Элемент модели, передаваемый в словарь, имеет тип «TestMVC3Razor.Controllers.Entity», но для этого словаря требуется элемент модели типа «TestMVC3Razor.Controllers.Location» с этим кодом:
@model TestMVC3Razor.Controllers.Entity
@using (Html.BeginForm())
{
@Html.Partial("LocationSelector", Model.Place)
<br />
<input type="submit" value="Submit" />
}
И частичный вид
@model TestMVC3Razor.Controllers.Location
@using (Html.BeginForm())
{
@Html.DropDownListFor(o => o.Country, new [] { new SelectListItem() { Text = "United States", Value="US" } })
<br />
@Html.DropDownListFor(o => o.State, new [] { new SelectListItem() { Text = "Some State", Value="SS" } })
<br />
@Html.DropDownListFor(o => o.City, new[] { new SelectListItem() { Text = "Some city", Value = "City" } })
}
Это, очевидно, не должно работать, но я хочу сделать что-то вроде этого, такой помощник будет идеальным
@Html.LocationSelectFor(o => o.Location)
Но как мне это сделать? Мне нужно сгенерировать 3 dropdowns
, и когда я отправляю сообщение в действие, мне нужно получить объект с запрещенными значениями.
public ActionResult(Location loc)
{
var x = String.Format("{0}, {1} - {2}", loc.City, loc.Country, loc.State);
}
Как я могу сделать этот помощник для создания 3 выпадающих и значений привязки при публикации?