Строго типизированные viewdata - PullRequest
2 голосов
/ 28 ноября 2008

Я создал строго типизированный LocationViewData со свойствами типа

public Location location { get; set; }

Location сама является моделью со свойствами Address, Country и т. Д.

В контроллере у меня есть:

public ActionResult Edit(int id)
{
    LocationViewData ld = new LocationViewData();
    ...
    return View(ld);
}

В представлении кода у меня есть:

public partial class Edit : ViewPage<MvcTest.Models.LocationViewData>
{
}

И мой вопрос: как я могу позволить свойствам модели Location в моем ViewData отображаться в соответствующих текстовых полях, например:

<%=Html.TextBox("address") %>

Я не хочу указывать каждое поле по его полному имени:

<%=Html.TextBox("address", ViewData.Model.location.address) %>

1 Ответ

1 голос
/ 28 ноября 2008

Это уже работает именно так. Запустите новый проект MVC (бета 1) и поместите его в действие «Индекс» контроллера «Home»:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        this.ViewData.Model = new MyObject
        {
            Name = "Timmy",
            FavColor = "Blue",
        };

        return View();
    }

    public class MyObject
    {
        public string Name { get; set; }

        public string FavColor { get; set; }
    }
}

Теперь поместите это в представление:

<%=Html.TextBox("FavColor") %>

В нем будет написано "Синий". Он пытается связать имя уже (MVC проверяет несколько мест, одним из которых является «Модель»).

РЕДАКТИРОВАТЬ: Что вам нужно сделать, это:

  1. Убедитесь, что «location» является свойством, а «address» является свойством.

  2. поставить имя "location.address" в качестве имени ... а не просто "адрес".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...