I converted my project from MVC 1 to MVC 2 and Visual Studio 2008 gives me the following error:
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
Here is the code the error is pointing to. It is specifically having trouble with the "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;
}
I suspect that it has something to do with a missing reference or something but I'm at a loss.
Html.ActionLink() does no longer return a string. It now returns a MvcHtmlString. A MvcHtmlString does not have a method called .Substring() (only string does). If you call .ToString() or .ToHtmlString() (will encode the value) then you will be able to call .Substring(). See this link.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With