为啥 ASP.NET MVC3 区域和 Razor 视图会产生此错误?
Posted
技术标签:
【中文标题】为啥 ASP.NET MVC3 区域和 Razor 视图会产生此错误?【英文标题】:Why do ASP.NET MVC3 Areas and Razor Views produce this error?为什么 ASP.NET MVC3 区域和 Razor 视图会产生此错误? 【发布时间】:2010-08-22 00:23:40 【问题描述】:“~/Areas/SomeArea/Views/List/Index.cshtml”处的视图必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl。
项目结构几乎是默认的。有一个区域称为 SomeArea。它有一个名为 List 的控制器。除了:
public ActionResult Index()
return View("~/Areas/SomeArea/Views/List/Index.cshtml");
视图如下:
@inherits System.Web.Mvc.WebViewPage<dynamic>
@
View.Title = "Index";
LayoutPage = "~/Views/Shared/_Layout.cshtml";
<h2>Index</h2>
我已尝试逐部分清空整个文件,但似乎没有任何帮助。如果我创建一个控制器并在该区域之外查看它就可以了。是否有可能默认剃须刀视图引擎目前不支持区域?
编辑:区域已注册。
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("resource.axd/*pathInfo");
routes.MapRoute(
"Default", // Route name
"controller/action/id", // URL with parameters
new controller = "Random", action = "Index", id = UrlParameter.Optional // Parameter defaults
);
protected void Application_Start()
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
public override void RegisterArea(AreaRegistrationContext context)
context.MapRoute(
"SomeArea_default",
"SomeArea/controller/action/id",
new controller = "List", action = "Index", id = UrlParameter.Optional
);
【问题讨论】:
【参考方案1】:来自 ASP.NET 论坛的回答:
http://forums.asp.net/t/1593209.aspx
这解决了问题。感谢回复!
【讨论】:
【参考方案2】:Getting the error "The view at '~/Views/Page/home.aspx' must derive from ViewPage, ViewPage<TViewData>, ViewUserControl, or ViewUserControl<TViewData>"类似的问题,可能对你有所帮助。另外,您是否在 global.asax 中注册了您的区域?
【讨论】:
以上是关于为啥 ASP.NET MVC3 区域和 Razor 视图会产生此错误?的主要内容,如果未能解决你的问题,请参考以下文章
asp.net mvc3.0中视图引擎razor和ASPX可以交互使用吗
使用razor/asp.net mvc3生成静态html页面?
Asp.net MVC3.0用Razor视图如何实现URL伪静态?真诚求教。