MVC3-динамическое перенаправление URL в Javascript


Я использую 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);
  }

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

Спасибо, Тони

1 2

1 ответ:

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

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

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