使用创建的扩展方法

发布于 2024-10-07 16:21:54 字数 1038 浏览 4 评论 0原文

这是我创建的方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using MvcApplication1.Models;
using System.Text;

namespace MvcApplication1.HelperMethods
{
    public static class NavigationalMenu
    {
        public static string MyMenu(this HtmlHelper helper)
        {
            ProyectoFinalEntities x = new ProyectoFinalEntities();
            var categories = x.Categories;
            StringBuilder stringBuilder = new StringBuilder();
            foreach (Category c in categories)
            {
                stringBuilder.Append(helper.RouteLink(c.Name, "AuctionCategoryDetails", new { categoryName = c.Name }).ToString());
            }

            return stringBuilder.ToString();
        }
    }
}

我被告知可以通过使用 @Html 关键字在我的视图中使用此扩展方法(现在,我正在使用 _layout.cshtml),如下所示:

@Html.MyMenu //doesn't appears to be in the available method selection.

我不能这样做的原因是什么像这样调用这个方法?感谢您的帮助。

Here's the method I created:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;
using MvcApplication1.Models;
using System.Text;

namespace MvcApplication1.HelperMethods
{
    public static class NavigationalMenu
    {
        public static string MyMenu(this HtmlHelper helper)
        {
            ProyectoFinalEntities x = new ProyectoFinalEntities();
            var categories = x.Categories;
            StringBuilder stringBuilder = new StringBuilder();
            foreach (Category c in categories)
            {
                stringBuilder.Append(helper.RouteLink(c.Name, "AuctionCategoryDetails", new { categoryName = c.Name }).ToString());
            }

            return stringBuilder.ToString();
        }
    }
}

I was told that I could then use this extension method in my Views (right now, I'm using _layout.cshtml) by using the @Html keyword, like so:

@Html.MyMenu //doesn't appears to be in the available method selection.

What's the reason why I can't call this method like that? Thanks for the help.

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

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

发布评论

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

评论(4

爱的十字路口 2024-10-14 16:21:54

更新您的 web.config:

  <system.web>
    <pages>
      <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.Web.WebPages"/>
        <add namespace="System.Web.Helpers" />
        ...
        <add namespace="MvcApplication1.HelperMethods" /><!-- Add this line -->
      </namespaces>
    </pages>
  </system.web>

这样您就不需要在每个视图中使用 MvcApplicatin1.HelperMethods 的 using 指令。您可以在该命名空间中放置多个辅助类。

Update you web.config:

  <system.web>
    <pages>
      <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.Web.WebPages"/>
        <add namespace="System.Web.Helpers" />
        ...
        <add namespace="MvcApplication1.HelperMethods" /><!-- Add this line -->
      </namespaces>
    </pages>
  </system.web>

This way you won't need to use the using directive for MvcApplicatin1.HelperMethods in each View. And you can put multiple helper classes in that namespace.

甜宝宝 2024-10-14 16:21:54

MvcApplication1.HelperMethods 添加 using 子句

Add a using clause for MvcApplication1.HelperMethods

左岸枫 2024-10-14 16:21:54

如果没有看到您的视图代码,很难准确地说,但您可能在视图代码中缺少对 MvcApplication1.HelperMethods 的引用。

Wihtout seeing your view code it is hard to say exactly but you are probably missing a reference to MvcApplication1.HelperMethods in the view code.

四叶草在未来唯美盛开 2024-10-14 16:21:54

您不需要 @Html 应该就可以了(尽管 @Html 也应该可以工作)。不过,您需要实际调用该方法:

Html.MyMenu()

如果您没有像 ReSharper 这样的程序来为您提供建议,则需要包含对该命名空间的引用

<%@ Import Namespace="MvcApplication1.HelperMethods" %>

You shouldn't need the @, Html should do just fine (though @Html should work as well). You'd need to actually invoke the method, though:

Html.MyMenu()

And if you haven't got a program like ReSharper that'll suggest this for you, you need to include a reference to that namespace

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