2010-11-09 4 views
5

In MVC2 abbiamo una classe base personalizzataPotete creare una vista personalizzata rasoio baseclass che ha un modello e un presentationmodel

public class OurViewPage<TModel,TPresentationModel> : ViewPage<TModel> 

così che abbiamo in vista di una proprietà per modello e una proprietà PresentationModel ...

di file aspx il nostro inizia con

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Our.Master" 
Inherits="OurViewPage<IndexModel,IndexPresentationModel>" %> 

con il motore di visualizzazione Razor MVC3, sarebbe qualcosa di equivalente possibile?

  • da quale classe di base dovremmo ereditare.
  • come si specifica nella vista quali classi utilizza una vista (equivalente alla direttiva Page)?

risposta

3

La classe deve derivare da System.Web.Mvc.WebViewPage<TModel>

Nel file visualizzazione si dovrebbe aggiungere la seguente riga alla parte superiore:

@inherits OurWebViewPage<IndexModel, IndexPresentationModel> 

Si noti che non si deve usare la sintassi @model se si dispone di un classe base con due parametri generici.

+0

Che sintassi dovrebbero usare? – Zote

+1

@Zote dovresti usare la sintassi @inherits mostrata nella mia risposta – marcind

+0

Ho problemi ad aggiungere spazi dei nomi personalizzati a tutte le mie viste. Ho visto esempi utilizzando la sezione <system.web.webPages.razor>, ma non sembrano funzionare per me. Voglio che tutti i miei modelli e gli helper HTML personalizzati siano conosciuti in tutte le visualizzazioni, ma continuo a ricevere errori che non sono noti e dovrei aggiungere un riferimento. Ma non voglio aggiungere istruzioni @using a tutti i miei punti di vista ... – rekna