Я использую MVC 6 и хочу иметь глобальный доступ к определенному пространству имен из всех представлений Razor. В MVC 5 это было довольно просто; Я бы просто добавил в свой файл ~/views/web.config следующий код:

<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>

Где я добавил доступ к пространству имен MyProject.WebUI.Helpers.

В ASP.NET 5 и, следовательно, в MVC 6 файл web.config был удален, поэтому я не знаю, как это сделать. Я попытался найти ответ, но все, что я могу найти, - это как это сделать в текущих версиях ASP.NET, а не в v5.

Любые идеи?

Изменить: пояснил, какой файл web.config я бы использовал.

25
Dylan Parry 25 Фев 2015 в 15:40

3 ответа

Лучший ответ

Для бит <= beta3 (что вы, скорее всего, используете) вам следует добавить операторы @using в свой _ViewStart.cshtml. Ака:

_ViewStart.cshtml: @using MyProject.WebUI.Helpers

Если у вас нет _ViewStart.cshtml, вы можете создать его и просто убедиться, что он находится на том же пути или родительском пути представления, на которое вы хотите повлиять.

Для битов beta4 эта функция была перенесена в новый файл с именем _GlobalImport.cshtml; _ViewStart.cshtml был возвращен к своей исходной функциональности (просто выполнение кода, а не наследование директив). Следовательно:

_GlobalImport.cshtml: @using MyProject.WebUI.Helpers

Для битов beta5 _GlobalImport.cshtml был переименован в _ViewImports.cshtml

30
N. Taylor Mullen 28 Май 2015 в 23:00

Я на бета 7, и мне пришлось использовать

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

@Context.User.GetUserId()
0
Clay Smith 16 Сен 2015 в 03:58

Добавьте свои пространства имен в файл _ViewImports.cshtml (он находится в папке "Просмотры").

Пример файла:

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

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
9
gdoron is supporting Monica 25 Май 2016 в 07:10