我正在研究我的第一个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)) %>
我做错了什么 - 或者我是否必须一直投射到视图中的对象?
答案 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>" %>