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 ответ:
Вы должны соединить статическую часть с динамической частью:
location = "@Url.Content("~/Area/Controller/Action")?ID=" + ID + "&ValueA=" + ValueA + "&ValueB=" + ValueB;
Внешний
"@...?ID="
является строковым литералом Javascript.@Url.Content("...")
это код на стороне сервера, который выдает необработанный текст в литерал Javascript.