LinkBuilder.BuildUrlFromExpression больше не работает в .Net 4 / VS 2010? - PullRequest
2 голосов
/ 24 февраля 2010

Я недавно перенес свое приложение ASP.Net MVC 1 из VS.Net 2008 / C # 3,5 в VS.NET 2010 / C # 4,0 .

Я широко использовал конструктор для получения строк URL-адресов из строго типизированных вызовов. Это выглядит так:

// sample call :
string toSamplePage = Url.To<SampleController>(c => c.Page(parameter1, parameter2));

код добавлен в качестве расширения по умолчанию UrlHelper :

public static string To<Tcontroller>(UrlHelper helper, Expression<Action<Tcontroller>> action) where Tcontroller : Controller
{
    // based on Microsoft.Web.Mvc.dll LinkBuilder
    return LinkBuilder.BuildUrlFromExpression<Tcontroller>(helper.RequestContext, helper.RouteCollection, action);
}

Единственная проблема в этом, это ссылка на Microsoft.Web.Mvc dll, но выигрыш в читаемости того стоил.

Проблема : больше не работает, возвращает (ноль) любые параметры.

Вопросы :

  1. Есть ли лучший способ построить ссылки из выражения? (да, я пытался гуглить безуспешно)

  2. Есть ли хитрость, чтобы бывший LinkBuilder.BuildUrlFromExpression работал? Я пытался перекомпилировать его в C # 4.0, но проблема в том, что он подразумевает работу над моей собственной скомпилированной версией System.Web.Mvc, которая не поддерживается.

В настоящее время я пытаюсь перейти на MVC 2, но у меня все еще есть проблемы ... Жду ваших предложений ...

Ответы [ 2 ]

2 голосов
/ 08 апреля 2010

Наша команда преодолела эту идентичную проблему, сославшись на System (Microsoft) .Web.Mvc 2.0.0.0 статически в нашей папке библиотек, а не на ссылку GAC. Это позволило нам продолжить работу с проектами MVC 1.0.0.0, а также дало нам преимущество в том, что нам не нужно устанавливать MVC 2 на наших серверах.

0 голосов
/ 25 февраля 2010

Оки, я нашел проблему.

У меня были проблемы с версиями сборок. После перестройки Microsoft.Web.Mvc + деинсталляция MVC 1 + обновление всех ссылок, наконец-то снова заработало.

Это отстой, потому что мне все еще нужен MVC 1 для других проектов, но по крайней мере моя основная проблема была решена.

Для разработчиков, впервые знакомых с платформой MVC: рассмотрите возможность начать непосредственно с MVC 2 / VS.Net 2010 / C # 4.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...