如何导入 URLExtension 以便其可用于所有视图和视图Ascx(Asp.NET MVC 2)

发布于 2024-11-05 04:53:11 字数 825 浏览 0 评论 0原文

我正在使用扩展类来提取图像、CSS、脚本等。

在 UI 层中,我有母版页、视图 (aspx) 和部分视图 (ascx)。是否需要在每个 Master、View 和 View 中导入 <%@ Import Namespace="Resorts.Web.Helpers" %>阿斯克斯?如果我在 Master 中导入,为什么我的 Views & ascx自动知道吗?我做错了吗?

namespace Resorts.Web.Helpers
{
    public static class UrlHelperExtension
    {
        public static string Image(this UrlHelper helper, string fileName)
        {
            return helper.Content("~/Content/Images/" + fileName);
        }

        public static string Stylesheet(this UrlHelper helper, string fileName)
        {
            return helper.Content("~/Content/CSS/" + fileName);
        }

        public static string Script(this UrlHelper helper, string fileName)
        {
            return helper.Content("~/Scripts/" + fileName);
        }

    }
}

I am using a extension class for pulling images, css, scripts etc.

In the UI layer, I have Master Pages, Views (aspx) and Partial Views (ascx). Is it required to Import <%@ Import Namespace="Resorts.Web.Helpers" %> inside each Master, View & Ascx? If I import inside Master, why can't my Views & Ascx automatically know about it? Am I doing it wrong way?

namespace Resorts.Web.Helpers
{
    public static class UrlHelperExtension
    {
        public static string Image(this UrlHelper helper, string fileName)
        {
            return helper.Content("~/Content/Images/" + fileName);
        }

        public static string Stylesheet(this UrlHelper helper, string fileName)
        {
            return helper.Content("~/Content/CSS/" + fileName);
        }

        public static string Script(this UrlHelper helper, string fileName)
        {
            return helper.Content("~/Scripts/" + fileName);
        }

    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一抹淡然 2024-11-12 04:53:11

如果您希望它在所有或大部分页面中可用,那么使用 import 指令确实是错误的方法。

添加可用命名空间的方法是在 web.config 文件中。应该有这样一个部分:

<system.web>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
        <namespaces>
            <add namespace="System.Web.Mvc"/>
            <add namespace="System.Web.Mvc.Ajax"/>
            <add namespace="System.Web.Mvc.Html"/>
            <add namespace="System.Web.Routing"/>
            <add namespace="System.Linq"/>
            <add namespace="System.Collections.Generic"/>
        </namespaces>
    </pages>
</system.web>

只需将 Resorts.Web.Helpers 添加到命名空间列表中。您可能需要重建您的应用程序或随后重新启动 VS,但这现在将使您的名称空间在母版页、视图和部分中可用。

If you want it available in all or most of your pages then using the import directive is indeed the wrong way to do it.

The way to add an available namespace is in your web.config file. There should be a section like:

<system.web>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
        <namespaces>
            <add namespace="System.Web.Mvc"/>
            <add namespace="System.Web.Mvc.Ajax"/>
            <add namespace="System.Web.Mvc.Html"/>
            <add namespace="System.Web.Routing"/>
            <add namespace="System.Linq"/>
            <add namespace="System.Collections.Generic"/>
        </namespaces>
    </pages>
</system.web>

Just add Resorts.Web.Helpers to the list of namespaces. You might need to rebuild your app or restart VS afterwards but this will now make your namespace available in masterpages, views and partials.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文