2012-05-08 17 views
6

Tenga en cuenta que esta no es una pregunta duplicada. Sé que podemos especificar un tipo de vista base en la sección de afeitado de views/web.config. Pero quiero que mi view1, view2 herede de baseviewA, y view3, view4 hereden de baseviewB. En la maquinilla de afeitar ¿cómo puedo hacer esto como que en el motor de ASPX:Cambiar la clase base de una vista de afeitar en el código de vista

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

EDITAR No me importa acerca de los modelos. En mi pregunta, baseviewA y baseviewB son clases totalmente diferentes.

+0

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

+0

@CodeJammr: Eso cambia toda la clase base de la vista. Quiero algunas clases base diferentes. –

Respuesta

9

Puede cambie el base class in Razor con la palabra clave @inherits, sus clases base solo necesitan derivar de System.Web.Mvc.WebViewPage.

Así que su muestra:

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

Será

@inherits Test.Myproject.Web.Mvc.ViewBase

Dónde

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

¿Es posible usar la sintaxis '<%' en la máquina de afeitar en lugar de '@'? –

+0

@ZainShaikh no el '<%' no es compatible con la afeitadora solo en páginas aspx. ¿Cuál es su problema con el uso del símbolo '@'? – nemesv

+0

Puede ser. Publicaré una pregunta por separado para esto, pero aún así continuaremos. Tengo un archivo de plantilla que uso con la biblioteca javascript ('guión bajo ') del lado del cliente para compilar la interfaz de usuario. Quiero renderizar el mismo archivo de plantilla desde el lado del servidor usando el motor 'razor' o alguna otra mejor que la afeitadora. –

2

Inherits especifica el tipo de modelo que se va a usar en la vista. Lo mismo puede hacerse en Razor.

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

es equivalente a la siguiente en la maquinilla de afeitar

@model Test.Models.MyModel 

esto es igual en ambos puntos de vista y vistas parciales, tanto

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

es equivalente a

@model Test.Models.MyModelB 
+0

No hay negocio modelo. Solo quiero cambiar la clase base de la vista. –

+1

OK, entonces la única manera sería mantener sus vistas en diferentes carpetas y tener un archivo web.config en cada carpeta que desee sobrescribir. – Manas

+0

¿Estás seguro de que podemos tener algunos archivos web.config en cada carpeta de visualización que 'anularán 'la configuración en la carpeta' view/'base? –

Cuestiones relacionadas