2012-05-08 11 views
6

Si noti che questa non è una domanda duplicata. So che possiamo specificare un tipo di vista di base nella sezione del rasoio di viste/web.config. Ma voglio che il mio view1, view2 erediti da baseviewA, e view3, view4 erediti da baseviewB. In rasoio come posso fare questo genere di motore ASPX:Modificare la classe base di una vista del rasoio nel codice della vista

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

EDIT Non mi importa di modelli. Nella mia domanda baseviewA e baseviewB sono classi completamente diverse.

+0

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

+0

@ CodeJammr: modifica tutta la classe base della vista. Voglio poche classi base diverse. –

risposta

9

Puoi cambia il base class in Razor con la parola chiave @inherits, le classi base devono solo derivare da System.Web.Mvc.WebViewPage.

Così il vostro campione:

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

Sarà

@inherits Test.Myproject.Web.Mvc.ViewBase

Dove

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

È possibile usare la sintassi '<%' nel rasoio invece di '@'? –

+0

@ZainShaikh no '<%' non è supportato nel rasoio solo nelle pagine aspx. Qual è il tuo problema con l'uso del simbolo '@'? – nemesv

+0

Forse inserirò una domanda a parte per questo, ma continuerò comunque a continuare. Ho un file template che uso con la libreria client javascript ('underscore') per costruire l'interfaccia utente. Voglio rendere lo stesso file template dal lato server usando il motore 'razor' o altri meglio del rasoio. –

2

Inheriti specifica il tipo di modello che verrà utilizzato nella vista. Lo stesso si può fare con il rasoio.

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

è equivalente al seguente in Razor

@model Test.Models.MyModel 

questo è lo stesso in entrambi i punti di vista e una vista parziale, così

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

è equivalente a

@model Test.Models.MyModelB 
+0

Non esiste business model. Voglio solo cambiare la classe base della vista. –

+1

OK, quindi l'unico modo sarebbe mantenere le viste in cartelle diverse e avere un web.config in ogni cartella che si desidera sovrascrivere. – Manas

+0

Sei sicuro di poter avere alcuni file web.config in ogni cartella di visualizzazione che "sovrascriverà" la configurazione nella cartella 'view /' di base? –

Problemi correlati