我正在使用此class在我的应用程序中使用干净的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;
我尝试this method,但我仍有同样的错误:
@UrlHelper.ToFriendlyUrl(item.Name)
并使用此指令using System.Web.Http.Routing;
代替using System.Web.Mvc;
,但我仍然遇到同样的错误。
似乎UrlHelper
属于另一个集会,我不知道。
任何想法?
感谢您的建议
答案 0 :(得分:2)
您还需要在视图中包含UrlEncoder
类的命名空间:
@using Mynamespace
答案 1 :(得分:0)
从我的视图中调用UrlHelper扩展方法时遇到了类似的错误,但解决方案略有不同,所以我会分享它,以防它帮助其他人:
在我的扩展程序中,我需要将using System.Web.Http.Routing;
替换为using System.Web.Mvc;
两者都解析UrlHelper
,但MVC参考是您在视图中使用它所需要的。
答案 2 :(得分:0)
将接口( IUrlHelper )代替类名(UrlHelper)作为第一个参数。
public static class UrlEncoder
{
public static string ToFriendlyUrl(this **IUrlHelper** helper,
string urlToEncode)
{
//your code
}
}