Контроллер доступа с помощью jQuery

#c# #jquery #ajax #asp.net-mvc

#c# #jquery #ajax #asp.net-mvc

Вопрос:

У меня есть представление под названием InvoiceTo и контроллер под названием Order. При использовании jQuery URL по умолчанию равен: url: '' , и это результат:

locahost:port/domain/order/InvoiceTo

Если я изменю URL: url: /Order/GetInformation , это результат:

locahost:port/domain/order/InvoiceTo/Order/GetInformation

Я уже перепробовал множество способов установить свой URL, но всегда ошибаюсь. Это мой jQuery:

 $(document).ready(function () {
        $('#InvoiceToDrop').change(function () {
            var $div = $('#modalPartial'); 
            var idcustomer = $(this).val(); 
            $.ajax({
                url: '/Order/GetInformation/'   idcustomer,
                type: 'GET',                
                success: function (data) {
                    alert(JSON.stringify(data));
                },
                error: function (error) {
                }
            })
        });
    });
  

Что мне нужно сделать, чтобы иметь этот URL:

locahost:port/domain/Order/GetInformation/1

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

1. Как выглядит ваш контроллер?

2. Почему у вас должно быть /domain/ в вашем URL? Я верю, что jQuery (и другие библиотеки тоже) /Order/GetInformation должны означать localhost:port/Order/GetInformation

3. Вы пробовали это url: '@Url.RouteUrl(new { controller = "Order", action = "GetInformation" })/' idcustomer ?

Ответ №1:

Вы можете использовать метод UrlHelper Url.Action в представлении:

 $.ajax({ 
    url: '@Url.Action("GetInformation", "Order", new { customerId })',
    ...
  

Или

 url: '@Url.Action("GetInformation", "Order")/'   idcustomer
  

При загрузке представления @Url.Action анализируется и заменяется фактическим значением.

Преимущества использования этого метода в том, что он использует таблицу маршрутизации, а не статически типизированные URL-адреса.