ASP.NET MVC ViewData.Model требует приведения - PullRequest
4 голосов
/ 25 августа 2009

Я работаю над своим первым приложением ASP.NET MVC, и у меня странная проблема. Все учебники по использованию строго типизированных ViewData не требуют приведения / оценки объекта ViewData / Model, но я получаю ошибки компиляции, если не приведу к объекту ViewData

Класс ViewData:

public class CategoryEditViewData
{
    public Category category { get; set; }
}

Действие контроллера:

public ActionResult Edit(int id)
{   
    Category category = Category.findOneById(id);
    CategoryEditViewData ViewData = new CategoryEditViewData();
    ViewData.category = category;
    return View("Edit", ViewData); 
}

Работает:

<%=Html.TextBox("name", 
               ((Project.Controllers.CategoryEditViewData)Model).category.Name)) %> 

Не работает:

<%=Html.TextBox("name", Model.category.Name)) %> 

Есть ли что-то, что я делаю неправильно - или мне приходится постоянно приводить объект к виду?

Ответы [ 2 ]

4 голосов
/ 25 августа 2009

Во-первых, вы должны переместить класс CategoryEditViewData из пространства имен ваших контроллеров в пространство имен ваших моделей. Создайте новый класс в папке Models, чтобы увидеть, как он должен выглядеть. Хорошей практикой является размещение ваших моделей в папке моделей.

Тогда ваша директива Control должна выглядеть так:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.CategoryEditViewData >" %>
0 голосов
/ 25 августа 2009

Подожди, просто подумал о чем-то. По вашему мнению, вы наследуете от вас модель ????

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<namespace.Controllers.YourFormViewModel>" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...