2012-05-08 9 views
6

Beachten Sie, dass dies keine doppelte Frage ist. Ich weiß, dass wir im Razor-Bereich von views/web.config einen Basisansichtstyp angeben können. Aber ich will meine view1, view2 erben von baseviewA, und die view3, view4 erben von baseviewB. In Rasierapparat, wie kann ich dies so in ASPX Motor:Ändern Sie die Basisklasse einer Rasiereransicht im Ansichtscode

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

EDIT Ich kümmere mich nicht um Modelle. In meiner Frage sind baseviewA und baseviewB völlig unterschiedliche Klassen.

+0

http://stackoverflow.com/questions/3963834/whats-the -Basis-Klasse-von-einem-Rasierer-Ansicht-in-Asp-Net-mvc3 –

+0

@CodeJammr: Das ändert die gesamte Basisklasse der Ansicht. Ich möchte ein paar verschiedene Basisklassen. –

Antwort

9

Sie können Ändern Sie die base class in Razor mit dem Schlüsselwort @inherits, müssen Ihre Basisklassen nur von System.Web.Mvc.WebViewPage abgeleitet werden.

So Ihr Beispiel:

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

Wird

@inherits Test.Myproject.Web.Mvc.ViewBase

Wo

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

Ist es möglich, '<%' Syntax in Rasiermesser statt '@' zu verwenden? –

+0

@ZainShaikh nein die '<%' wird nicht in Rasierer nur in aspx Seiten unterstützt. Was ist dein Problem mit der Verwendung des '@' Symbols? – nemesv

+0

Vielleicht werde ich eine separate Frage dafür stellen, aber trotzdem weitermachen. Ich habe eine Vorlagendatei, die ich mit clientseitiger javascript ('Unterstrich') -Bibliothek benutze, um eine Benutzerschnittstelle zu erstellen. Ich möchte die gleiche Vorlage Datei von Server-Seite mit 'Rasiermesser'-Engine oder etwas anderes als Rasierer rendern. –

2

Inherits gibt den Modelltyp an, der in der Ansicht verwendet werden soll. Das Gleiche kann in Razor getan werden.

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

entspricht in Razor zu folgenden

@model Test.Models.MyModel 

Dies ist sowohl gleiche in Ansichten und Teilansichten, also

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

entspricht

@model Test.Models.MyModelB 
+0

Es gibt kein Geschäftsmodell. Ich möchte nur die Basisklasse der Ansicht ändern. –

+1

OK, dann wäre der einzige Weg, Ihre Ansichten in verschiedenen Ordnern zu behalten und eine web.config in jedem Ordner zu haben, den Sie überschreiben wollen. – Manas

+0

Sind Sie sicher, dass wir einige web.config-Dateien in jedem Ansichtsordner haben können, die die Konfiguration im Basisordner 'view /' überschreiben? –

Verwandte Themen