我如何创建一个WebRazorHostFactory,不搞砸智能感知
本文关键字:感知 智能 WebRazorHostFactory 何创建 创建 一个 | 更新日期: 2023-09-27 17:48:57
如果我像这样新建一个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中引用它。像这样配置:
<system.web.webPages.razor>
<host factoryType="Test.TestMvcWebRazorHostFactory" />
...
</system.web.webPages.razor>
视图文件中的智能感知不再识别:
中的"model"answers"TextBoxFor"@model Test.Models.Person
<div>
@this.Html.TextBoxFor( x => x.Name )
</div>
我如何使一个新的WebRazorHostFactory,不搞砸了智能感知在视图文件?
在MvcWebPageRazorHost我看到他们运行一个函数"GetRidOfNamespace("System.Web.WebPages.Html");",但我不确定这是否是问题?我试着写一个不同的类,做同样的事情,MvcWebPageRazorHost没有这个函数,它似乎没有效果。谢谢。
我通过在运行时在Global.asax.cs中的Application_Start中更改它来工作。
代码如下:
var hostSection = WebConfigurationManager.GetSection(HostSection.SectionName, "/Views") as HostSection;
if (hostSection != null)
{
hostSection.FactoryType = "Type.Name, Assembly";
}
对于你可能有的任何区域都需要这样做。
您需要将包含自定义工厂的程序集安装到GAC中,以便Visual Studio可以使用它