Custon Razor HtmlHelper在运行时与命名空间冲突

时间:2017-05-19 08:58:14

标签: c# asp.net-mvc asp.net-mvc-4 razor

我创建了一个自定义WebViewPage。这允许我在我的Razor视图中添加自定义助手:

public abstract class CompanyNameWebViewPage<TModel> : WebViewPage<TModel>
{
    public override void InitHelpers()
    {
        base.InitHelpers();
        CompanyName = new CompanyNameHtmlHelper<TModel>(this.Html);
    }

    public CompanyNameHtmlHelper<TModel> CompanyName { get; protected set; }
}

在我的Razor中使用它:

@CompanyName.Theme.Image("logo.png")

问题是CompanyName是我真正想要用于HTML帮助程序的名称和我们的代码所在的命名空间。因此,在visual studio @CompanyName.Theme.etc中解析为CompanyNameHtmlHelper }。

但是,在运行时我收到错误:

The type or namespace name 'Theme' does not exist in the namespace 'CompanyName' (are you missing an assembly reference?)

很明显CompanyName现在正在解析命名空间而不是HtmlHelper。

为什么会这样?为什么Visual Studio允许我这样做会给我一个运行时错误?有没有工作?拿出一些令人费解的名字而不仅仅是我公司的名字真的很烦人。

0 个答案:

没有答案