2012-05-08 63 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 /'文件夾中的配置嗎? –