BuildUrlFromExpressionForAreas не генерирует спокойный URL - PullRequest
0 голосов
/ 11 января 2011

У меня есть действие контроллера, которое принимает идентификатор в качестве параметра.Успешный способ вызвать это: / Controller / Action / id, и если я использую помощник ActionLink (ниже), URL будет сгенерирован правильно.

Html.ActionLink(linkText, action, controller, new { id = myid }) 

Однако мне нужно получить URL дляоткройте страницу в новом окне.Я попытался использовать BuildUrlFromExpressionForAreas, но он дает мне URL-адрес в следующем формате: / Controller / Action? Id = myid.

Html.BuildUrlFromExpressionForAreas<MyController>(t => t.Action(myid))

Это не работает - я получаю следующее исключение:

Словарь параметров содержит пустую запись для параметра 'id' ненулевого типа 'System.Guid' дляmethod 'System.Web.Mvc.ActionResult Resume (System.Guid)'

Есть ли другой вспомогательный метод, который мне следует использовать?

Спасибо!

1 Ответ

0 голосов
/ 11 января 2011

Надеюсь, есть лучший подход, но пока вот мое решение:

1 - Добавить класс "action-link" к ссылкам action

Html.ActionLink (linkText, action, контроллер, новый {id = myid}, новый { @ CLASS = 'действия ссылку'})

2 - Используйте jquery, чтобы получить сгенерированный URL, привязать его к событию click и установить для href значение #

       $(document).ready(function () {
           $(".action-link").each(
               function (index, el) {
                   var url = $(this).attr("href");
                   $(this).attr("href", "#").bind("click",
                       function () {
                           var options = "resizable=yes,scrollbars=yes,toolbar=no,status=no,menubar=no";
                           window.open(url, "Interview", options, true);
                       });
               }
           );
       });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...