2015-02-25 7 views
18

Ich benutze MVC 6 und möchte in der Lage sein, aus allen meinen Razor-Ansichten global auf einen bestimmten Namespace zuzugreifen. In MVC 5 war das ziemlich einfach;Hinzufügen von Namespace zu allen Ansichten in ASP.NET MVC 6

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Optimization"/> 
      <add namespace="System.Web.Routing" /> 
      <add namespace="MyProject.WebUI" /> 
      <add namespace="MyProject.WebUI.Helpers" /><!-- Added this line --> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

Wo ich Zugang zum MyProject.WebUI.Helpers Namensraum hinzugefügt haben: Ich würde einfach den folgenden Code in meine ~/views/web.config Datei hinzufügen.

In ASP.NET 5, und daher MVC 6, die web.config Datei wurde beseitigt, so dass ich nicht sicher bin, wie man das mehr tun. Ich habe versucht, nach einer Antwort zu suchen, aber alles, was ich finden kann, ist, wie man es in aktuellen Versionen von ASP.NET statt v5 macht.

Irgendwelche Ideen?

Edit: geklärt, welche web.config Datei hätte ich verwendet.

+1

wo haben fügen Sie diesen Namensraum ~/web.config oder ~/views/web.config? –

+1

Das wäre in '' '~/views/web.config''' gewesen, aber ASP.NET 5 verwendet' 'web.config''' Dateien überhaupt nicht, also habe ich keine Ahnung, was ich brauche hinzufügen oder sogar wo ich es hinzufügen muss. –

+1

Wenn Sie diese Dateien in der Datei ~/views/web.config hinzufügen, entladen Sie Ihr Projekt und versuchen Sie es anschließend erneut. –

Antwort

25

Für < = beta3 Bits (was Sie wahrscheinlich verwenden) sollten Sie eine @using Anweisungen zu Ihrem _ViewStart.cshtml hinzufügen. Aka:

_ViewStart.cshtml: @using MyProject.WebUI.Helpers

Wenn Sie nicht über eine _ViewStart.cshtml haben kann man schaffen und so stellen Sie sicher, dass es in dem gleichen Weg oder übergeordneten Pfad der Ansicht, die Sie wollen, dass es beeinflussen.

Für Beta4-Bits wurde diese Funktionalität in eine neue Datei namens _GlobalImport.cshtml verschoben; _ViewStart.cshtml wurde zurück zu seiner ursprünglichen Funktionalität (nur Code ausgeführt, nicht erben Anweisungen). Deshalb:

_GlobalImport.cshtml: @using MyProject.WebUI.Helpers

Für beta5 Bits wurde _GlobalImport.cshtml umbenannt _ViewImports.cshtml

+0

Ausgezeichnet. Genau das, was ich wissen musste, danke! –

+1

in Beta5 ist '_ViewImports.cshtml' https: // github.com/aspnet/Announcements/issues/27 –

+0

Scheint überflüssig, sowohl _ViewStart und _ViewImports zu mir zu haben. – WillC

0

ich auf Beta bin 7 und ich hatte

@using System.Security.Principal 
@using System.Security.Claims 

@Context.User.GetUserId() 
6

verwenden Fügen Sie Ihre Namespaces zur Datei _ViewImports.cshtml hinzu (sie befindet sich im Ordner Views).

Beispieldatei:

@using Microsoft.AspNetCore.Identity 
@using Jifiti.Registry.Web.Models.AccountViewModels 
@using Jifiti.Registry.Web.Models.ManageViewModels 

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers