Как мне создать WebRazorHostFactory, который не испортит intellisense? - PullRequest
1 голос
/ 04 апреля 2011

Если я создам новый WebRazorHostFactory, как это:

namespace Test
{
    public class TestMvcWebRazorHostFactory : WebRazorHostFactory
    {
        public override WebPageRazorHost CreateHost(string virtualPath, string physicalPath)
        {
            WebPageRazorHost host = base.CreateHost(virtualPath, physicalPath);

            if (!host.IsSpecialPage)
            {
                return new MvcWebPageRazorHost(virtualPath, physicalPath);
            }

            return host;
        }
    }
}

и ссылаться на него в ~ / Views / Web.config следующим образом:

<system.web.webPages.razor>
    <host factoryType="Test.TestMvcWebRazorHostFactory" />
    ...
</system.web.webPages.razor>

intellisense в моих файлах вида больше не распознает "модель" и "TextBoxFor" в:

@model Test.Models.Person

<div>
    @this.Html.TextBoxFor( x => x.Name )
</div>

Как мне создать новую WebRazorHostFactory, которая не испортит intellisense в файлах просмотра?

В MvcWebPageRazorHost я вижу, что они запускают функцию "GetRidOfNamespace (" System.Web.WebPages.Html ");", но я не уверен, что это проблема? Я попытался написать другой класс, который делает то же самое, что и MvcWebPageRazorHost без этой функции, и, похоже, не имеет никакого эффекта. Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 июля 2012

Я заработал, изменив его во время выполнения в моем Application_Start в Global.asax.cs.

Вот код:

        var hostSection = WebConfigurationManager.GetSection(HostSection.SectionName, "/Views") as HostSection;

        if (hostSection != null)
        {
            hostSection.FactoryType = "Type.Name, Assembly";
        }

Это необходимо сделать для любых областей.Вы могли бы также.

1 голос
/ 11 мая 2012

Вам необходимо установить сборку, содержащую пользовательскую фабрику, в GAC, чтобы Visual Studio могла использовать ее.

...