2015-02-25 14 views
18

Tôi đang sử dụng MVC 6 và muốn có thể truy cập vào một không gian tên cụ thể trên toàn cầu từ tất cả các chế độ xem Razor của tôi. Trong MVC 5, điều này khá đơn giản; Tôi chỉ muốn thêm đoạn mã sau vào tập tin ~/views/web.config tôi:Thêm không gian tên vào tất cả các khung nhìn trong 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> 

Nơi tôi đã thêm quyền truy cập vào các namespace MyProject.WebUI.Helpers.

Trong ASP.NET 5, và do đó MVC 6, tệp web.config đã được thực hiện với, vì vậy tôi không chắc chắn làm thế nào để đi về việc này nữa. Tôi đã thử tìm kiếm một câu trả lời, nhưng tất cả những gì tôi có thể tìm được là làm thế nào để thực hiện nó trong các phiên bản hiện tại của ASP.NET hơn là v5.

Bất kỳ ý tưởng nào?

Chỉnh sửa: Làm rõ tệp nào web.config tôi đã sử dụng.

+1

nơi mà bạn đã thêm namespace này ~/web.config hoặc ~/views/web.config? –

+1

Điều này sẽ có trong '' '~/views/web.config''', nhưng ASP.NET 5 không sử dụng các tệp' '' web.config''' ở tất cả, vì vậy tôi không biết mình cần gì để thêm hoặc thậm chí nơi tôi cần thêm nó vào. –

+1

Nếu bạn thêm những tập tin này vào tập tin ~/views/web.config, hãy dỡ bỏ dự án của bạn và thử tải lại sau đó. –

Trả lời

25

Đối với < = beta3 bit (những gì bạn có nhiều khả năng sử dụng nhất), bạn nên thêm câu lệnh @using vào _ViewStart.cshtml của mình. Aka:

_ViewStart.cshtml: @using MyProject.WebUI.Helpers

Nếu bạn không có một _ViewStart.cshtml bạn có thể tạo một và chỉ cần đảm bảo nó trong đường dẫn hoặc cha mẹ cùng con đường của xem bạn muốn nó ảnh hưởng.

Đối với các bit beta4, chức năng này đã được chuyển sang tệp mới có tên _GlobalImport.cshtml; _ViewStart.cshtml đã được chuyển trở lại chức năng ban đầu của nó (chỉ cần chạy mã, không kế thừa chỉ thị). Do đó:

_GlobalImport.cshtml: @using MyProject.WebUI.Helpers

Đối bit beta5, _GlobalImport.cshtml được đổi tên thành _ViewImports.cshtml

+0

Tuyệt vời. Chính xác những gì tôi cần biết, cảm ơn! –

+1

trong bản Beta5 là '_ViewImports.cshtml' https: // github.com/aspnet/Thông báo/vấn đề/27 –

+0

Dường như dự phòng có cả _ViewStart và _ViewImports đối với tôi. – WillC

0

Tôi đang trên beta 7 và tôi đã phải sử dụng

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

@Context.User.GetUserId() 
6

Thêm không gian tên của bạn vào tập tin _ViewImports.cshtml (nó nằm trong thư mục Views).

tập tin Ví dụ:

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

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 
Các vấn đề liên quan