MVC3 - динамическое перенаправление URL в Javascript - PullRequest
2 голосов
/ 08 сентября 2011

Я использую C #, MVC3 и Razor.

У меня есть функция javascript (в виде), которая вызывается при нажатии на конкретный пункт меню. В этой функции мне нужно создать новый URL с параметрами (на основе других вариантов выбора на экране) и перенаправить на него. Он хочет сделать что-то подобное:

ValueA и ValueB являются переменными в разделе javascript и заполняются значениями.

function doSomething(ID) {
    location.href =  "../Area/Controller/Action?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB;
  }

Однако из-за природы MVC мне нужно убедиться, что URL всегда правильный, независимо от того, как пользователь попал на страницу. Я пытался использовать @ Url.Content ("") (см. Следующий блок кода), но я столкнулся с проблемой:

  • Имя 'ID' не существует в текущем контексте
  • Имя 'ValueA' не существует в текущем контексте
  • Имя 'ValueB' не существует в текущем контексте

Вот пример того, что я хотел бы сделать, но получить вышеупомянутые ошибки:

function doSomething(ID) {
    location.href = @Url.Content("~/Area/Controller/Action?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB);
  }

Как я могу заставить эту работу? Есть ли способ лучше?

Спасибо, Tony

1 Ответ

6 голосов
/ 08 сентября 2011

Вы должны объединить статическую часть с динамической частью:

location = "@Url.Content("~/Area/Controller/Action")?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB;

Внешний "@...?ID=" - это строковый литерал Javascript.
@Url.Content("...") - это код на стороне сервера, который генерирует необработанный текств литерал Javascript.

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