Генерация правильного URL с помощью Url.Action, когда идентификатор является динамическим (на стороне клиента)

#asp.net-mvc #asp.net-mvc-2

#asp.net-mvc #asp.net-mvc-2

Вопрос:

Из jqGrid при двойном щелчке я пытаюсь перенаправить пользователя на новую страницу в соответствии со следующим кодом

 ondblClickRow : function (id) {
                location.href = '<% = Url.Action("Index","MyFeature") %>/'   id;
            }
  

Ошибки кода, которые мы получаем как

результирующий URL является

http://localhost:8080/MyFeature.mvc/9a1347dc-60b0-4b3b-9570-9ed100b6bc6a

Добавление индекса после контроллера делает свое дело, но есть ли лучший способ сделать это

 location.href = '<% = Url.Action("Index","MyFeature") %>/Index/'   id;
  

http://localhost:8080/MyFeature.mvc/Index/9a1347dc-60b0-4b3b-9570-9ed100b6bc6a

Ответ №1:

Вы могли бы использовать какой-нибудь заполнитель, который вы замените на клиенте:

 ondblClickRow : function (id) {
    var url = '<%= Url.Action("Index", "MyFeature", new { id = "__id__" }) %>';
    window.location.href = url.replace('__id__', id);
}
  

Комментарии:

1. Вау, позвольте мне попробовать это, я уверен, что это должно сработать и дало мне еще несколько идей. Спасибо. Я обновлю ответ, как только проведу тестирование

2. @ Darin — это сработало. Я также попробовал кое-что, что может не привести к проблемам позже (не уверен). …… ‘<%= Url.Action(«Index», «MyFeature», new { идентификатор = «/» }) %>’ идентификатор;. Это также сработало.