【问题标题】:@using by default in razor views MVC 5@在剃刀视图 MVC 5 中默认使用
【发布时间】:2016-12-01 14:57:25
【问题描述】:

我有单独的资源程序集,我希望每个剃刀视图都可以访问它。

现在我将@using Res = MyProject.Web.Resources; 放在每个需要它的视图中(稍后所有页面都会)并通过

@Res.TheNeededResource.TheField

我尝试将资源命名空间添加到视图文件夹中的 web.config,但没有成功

<add namespace="MyProject.Web.Resources" /> 

如果我在视图中添加完整路径命名空间,IDE 会突出显示我在配置中添加的命名空间是多余的 - 当我删除它时 - 错误

如何正确添加该命名空间?还是其他方式?

【问题讨论】:

标签: asp.net-mvc razor namespaces


【解决方案1】:

在您的web.config 中,很可能是Views 文件夹中的文件,您可以添加一个具有如下别名的命名空间:

<namespaces>
    ...
    <add namespace="Res=MyProject.Web.Resources" />
</namespaces>

现在您可以像以前一样调用您的代码:

@Res.TheNeededResource.TheField

这是 Razor 的一个未记录的功能,即使它是有效的语法,IDE 也可能将其呈现为错误。这意味着您最好将基本页面类型更改为您自己的类型,如下所示:

public abstract class BaseViewPage : BaseViewPage<object>
{
}

public abstract class BaseViewPage<TModel> : WebViewPage<TModel>
{
    public TheNeededResource Res => MyProject.Web.Resources.TheNeededResource
}

在您的web.config 中将基本页面类型更改为您自己的:

<pages pageBaseType="MyProject.Web.BaseViewPage">

现在在您的视图中,您可以像使用 Html 一样使用 Res 属性:

@Res.TheField

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多