如果我像这样创建一个新的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完全相同但不使用此函数的其他类,它似乎没有任何效果。感谢。
答案 0 :(得分:2)
我通过在Global.asax.cs的Application_Start中在运行时更改它来实现它。
以下是代码:
var hostSection = WebConfigurationManager.GetSection(HostSection.SectionName, "/Views") as HostSection;
if (hostSection != null)
{
hostSection.FactoryType = "Type.Name, Assembly";
}
这也需要针对你可能拥有的任何领域。
答案 1 :(得分:1)
您需要将包含自定义工厂的程序集安装到GAC中,以便Visual Studio可以使用它。