У меня проблемы с моими расширениями класса UrlHelper, так как они не обнаруживаются.Пока что я сделал следующее:
1) Добавил пространства имен в раздел в файле web.config, который находится в папке Views.Я также добавил их в основной файл web.config, чтобы быть уверенным.
<system.web.webPages.razor>
2) Убедитесь, что ссылка System.Web.Mvc в файле csproj предназначена для MVC3,Я также убедился, что ссылки System.Web.WebPages и System.Web.Helpers включены.
3) Убедитесь, что csproj ProjectTypeGuids указаны правильно.
{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
4) Проверено, что bindingRedirect указывает на MVC3.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Я что-то упустил, так как Google не выдвинул ничего другого?
Код выглядит следующим образом (снесущественные вещи удалены):
namespace MyNameSpace.Controllers.Extensions
{
using System.Web.Mvc;
using System.Web.Routing;
using Contracts.Entities;
using Controllers.Routing;
public static class UrlHelperExtensions
{
public static string BrowseLink(this UrlHelper urlHelper, ICategory category)
{
var routeValueDictionary = new RouteValueDictionary
{
{ "categorypath", BrowsePath.Serialize(catagory) },
{ "pagenumber", "1" }
};
return urlHelper.Action("Index", "Browse", routeValueDictionary);
}
}
}