2012-05-08 98 views
6

请注意,这不是重复的问题。我知道我们可以在views/web.config的razor部分指定一个基本视图类型。但我希望我的view1,view2继承自baseviewA,而view3,view4继承自baseviewB。在剃刀我怎么能做到这一点像在ASPX引擎:在视图代码中更改剃须刀视图的基类

<%@ Page Language="C#" Inherits="Test.Myproject.Web.Mvc.ViewBase" %> 
<%@ Control Language="C#" Inherits="Test.Myproject.Web.Mvc.PartialViewBase" %> 

编辑我不关心模型。在我的问题中,baseviewA和baseviewB是完全不同的类。

+0

http://stackoverflow.com/questions/3963834/whats-the asp-net-mvc3-base-class-of-razor-view- –

+0

@CodeJammr:这改变了视图的所有基类。我想要几个不同的基类。 –

回答

9

你可以更改base class in Razor@inherits关键字相关,您的基类只需要从System.Web.Mvc.WebViewPage派生。

所以你的样品:

<%@ Page Language="C#" Inherits="Test.Myproject.Web.Mvc.ViewBase" %>

将是

@inherits Test.Myproject.Web.Mvc.ViewBase

public class Test.Myproject.Web.Mvc.ViewBase : System.Web.Mvc.WebViewPage 
{ 
} 
+0

是否可以在剃刀中使用'<%'语法而不是'@'? –

+0

@ZainShaikh只有在aspx页面中,剃刀不支持'<%'。你使用'@'符号的问题是什么? – nemesv

+0

可能我会为此发布一个单独的问题,但仍然可以继续。我有一个模板文件,我使用客户端JavaScript('下划线')库来建立用户界面。我想用'razor'引擎或其他比剃刀更好的方式从服务器端渲染相同的模板文件。 –

2

Inherits指定要在视图中使用的模型类型。这同样可以在剃刀中完成。

<%@ Page Language="C#" Inherits="Test.Myproject.Web.Mvc.ViewBase<Test.Models.MyModel>" % 

相当于剃刀以下

@model Test.Models.MyModel 

这是两种观点并部分观点相同,所以

<%@ Control Language="C#" Inherits="Test.Myproject.Web.Mvc.PartialViewBase<Test.Models.MyModelB>" %> 

相当于

@model Test.Models.MyModelB 
+0

没有模范生意。我只是想改变视图的基类。 –

+1

好的,那么唯一的办法就是将您的视图保存在不同的文件夹中,并在每个要覆盖的文件夹中都有一个web.config文件。 – Manas

+0

你确定我们可以在每个视图文件夹中有几个web.config文件来覆盖基本'view /'文件夹中的配置吗? –