2013-09-28 29 views
0

我使用这个class在我的应用程序有干净的URL扩展方法:得到错误,当我创建UrlHelper

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?) 

我这些使用DIRECTI添加五个:

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属于另一个程序集,我不知道。

有什么想法?
谢谢您的建议

回答

2

您还需要包括UrlEncoder类的命名空间,您的看法:

@using Mynamespace 
0

我打电话,从我的观点一个UrlHelper扩展方法时遇到类似错误,但解决方案稍有不同,所以我会分享它以防万一它帮助别人:

在我的扩展类中,我需要用using System.Web.Mvc;替换

两者都解决UrlHelper,但是MVC参考是您在视图中使用它所需的参考。

相关问题