2010-03-04 13 views
9

I converted my project de MVC MVC 1 a 2 y Visual Studio 2008 me da el siguiente error:MvcHtmlString MVC error 2 Conversión

Error 1 'System.Web.Mvc.MvcHtmlString' does not contain a definition for 'Substring' and no extension method 'Substring' accepting a first argument of type 'System.Web.Mvc.MvcHtmlString' could be found (are you missing a using directive or an assembly reference?) C:\Dev\SapientFansite\SapientFansiteApplication\SapientFansiteWeb\Code\ExtensionMethods\Html.cs 68 75 SapientDevelopment.SapientFansite.Web 

Aquí es el código de error está apuntando. Está específicamente teniendo problemas con el "linkHtml.Substring (0, 2)".

 var linkHtml = htmlHelper.ActionLink(linkText, actionName, controllerName); 
    if (isActiveMenuItem) { 
     linkHtml = string.Format("{0} class=\"active\" {1}", linkHtml.Substring(0, 2), linkHtml.Substring(3)); 
    } 
    return linkHtml; 
    } 

Sospecho que tiene algo que ver con una referencia faltante o algo así, pero estoy perdido.

Respuesta

11

Html.ActionLink() ya no devuelve una cadena. Ahora devuelve un MvcHtmlString. Una MvcHtmlString no tiene un método llamado .Substring() (solo la cadena lo hace). Si llama al .ToString() o .ToHtmlString() (codificará el valor), entonces podrá llamar al .Substring(). Ver this link.

+0

Gracias, esto funcionó. Parece que ActionLink me sacó una rápida. :) –