2

アプリケーションでクリーンな URL を使用するために、このクラスを使用しています。

public static class UrlEncoder
    {
        public static string ToFriendlyUrl(this UrlHelper helper,
            string urlToEncode)
        {
            urlToEncode = (urlToEncode ?? "").Trim().ToLower();

            StringBuilder url = new StringBuilder();

            foreach (char ch in urlToEncode)
            {
                switch (ch)
                {
                    case ' ':
                        url.Append('-');
                        break;
                    case '&':
                        url.Append("and");
                        break;
                    case '\'':
                        break;
                    default:
                        if ((ch >= '0' && ch <= '9') ||
                            (ch >= 'a' && ch <= 'z'))
                        {
                            url.Append(ch);
                        }
                        else
                        {
                            url.Append('-');
                        }
                        break;
                }
            }

            return url.ToString();
        }
    }

そして、私はこの方法で上記のクラスを使用しています:

<a href="/Products/@item.Id/@Url.ToFriendlyUrl(item.Name)">@item.Name</a>

しかし、このエラーが発生し、拡張機能が機能しません:

Compiler Error Message: CS1061: 'System.Web.Mvc.UrlHelper' does not contain a definition for 'ToFriendlyUrl' and no extension method 'ToFriendlyUrl' accepting a first argument of type 'System.Web.Mvc.UrlHelper' could be found (are you missing a using directive or an assembly reference?)

私はディレクティブを使用してこれらを追加しました:

using System;
using System.Text;
using System.Web.Mvc;

私はこの方法を試しましたが、それでも同じエラーがあります:

@UrlHelper.ToFriendlyUrl(item.Name)

using System.Web.Http.Routing;代わりにこのディレクティブを使用しましusing System.Web.Mvc;たが、それでも同じエラーが発生します。別のアセンブリに属しているようですがUrlHelper、わかりません。

何か案は?
あなたのアドバイスに感謝します

4

3 に答える 3

2

UrlEncoderビューにクラスの名前空間を含める必要もあります。

@using Mynamespace
于 2013-09-28T10:09:26.437 に答える