Не удается разрешить символ @ Url.Action

0

Должна быть простая проблема, но я точно не знаю, почему это так.

На моем веб-сайте ASP.NET MVC 5 у меня есть простой вид с сеткой и действие соты, которое вызывает функцию js, отправляющую некоторые параметры этой функции.

function OnCellClick(param1, param2) {
        var urlAJAX = @Url.Action("GetJson", "PosicaoEstoque", new { p1 = param1 , p2 =param2}); }

Таким образом, я получаю сообщение "Can not Resolve" для param1 и param2. Как я могу это решить?

  • 0
    привет @ggui, мне просто любопытно, используя код из ответа @ Satpal, можешь ли ты на самом деле получить значение для p2 в своем методе GetJson ?
Теги:
asp.net-mvc

3 ответа

4
Лучший ответ

Вы можете использовать placeholder. Сгенерируйте url, используя параметры держателя места, а затем замените их параметром

function OnCellClick(param1, param2) {
    var urlAJAX = '@Url.Action("GetJson", "PosicaoEstoque", new { p1 = -1 , p2 = -2})';
    urlAJAX = urlAJAX.replace('-1', param1).replace('-2', param2);
}
  • 0
    +1 за хороший ответ
  • 0
    Да, эта функция вызывается на стороне клиента, и вы назначаете URL-адрес со стороны службы. Таким образом, переменные param1 и param2 не будут доступны в javascript. Так что лучше иметь заполнитель и заменить их
Показать ещё 5 комментариев
1

Без использования Url.Action как Url.Action ниже:

var urlAJAX = 'PosicaoEstoque/GetJson?p1=' + param1 + '&p2=' + param2;
1

Ваша проблема в том, что вы смешиваете серверный и клиентский код. Вы не можете просто поместить переменные JavaScript в Url.Action(), поскольку он выполняется на стороне сервера. Что вы можете сделать, это поместить некоторые фиктивные значения в качестве параметров и вызвать функцию replace() JavaScript в сгенерированном URL-адресе.

Проверьте это для справки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню