ASP.NET MVC ViewData.Model需要强制转换

时间:2009-08-25 04:41:32

标签: c# asp.net asp.net-mvc

我正在研究我的第一个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 个答案:

答案 0 :(得分:4)

首先,您应该将CategoryEditViewData类移出控制器命名空间,并移入模型命名空间。在Models文件夹下创建一个新类,看看它应该是什么样子。最好将模型放在模型文件夹下。

然后您的Control指令应如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.CategoryEditViewData >" %>

答案 1 :(得分:0)

等等,想到了什么。在你看来你是继承你的模特????

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<namespace.Controllers.YourFormViewModel>" %>