Cuộc gọi Ajax không đạt được đường dẫn url trong bộ điều khiển/hành động

lập trình


Đối với sự kiện OnChange thả xuống, tôi đang thực hiện cuộc gọi ajax. Trong đường dẫn url, khi tôi đưa ra đường dẫn Bộ điều khiển/Hành động, nó hoàn toàn không chạm vào phương thức.
Mã của tôi trông giống như:

JavaScript
function FillHO() {
    //alert('Test');
    var stateId = $('#ddlHO').val();
    $.ajax({
        type: "POST",
        url: '@Url.Action("SetSelectedHO","../../Controllers/ReportsController")' 
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: '{SelectedValue: "' + stateId + '" }',
        success: function (response) {
            alert('Test');
        },
        failure: function (response) {
        alert(response.d);
    }
    });
}

Những gì tôi đã thử:

Tôi đã thử ‘../../Controllers/ReportsController/SetSelectedHO’
‘ReportsController/SetSelectedHO’

Giải pháp 2

Bạn không cần chỉ định đường dẫn khi sử dụng Url.Action() phương pháp. Bạn cần chỉ định Controller thay vào đó là tên.

Vì vậy nếu bạn có một Controller được đặt tên là ReportsController, thì bạn có thể thử làm một cái gì đó như thế này:

JavaScript
url: '@(Url.Action("SetSelectedHO","Reports"))'

Lưu ý rằng hậu tố Controller đã bị bỏ qua khi tham chiếu đến một Controller tên. Nói cách khác, của bạn ReportsController có thể được tham chiếu như Reports chỉ một. Đó là một phần của quy ước.

Để biết thêm thông tin về các phương pháp quá tải khác của Url.Action() phương pháp xem:Phương thức UrlHelper.Action (System.Web.Mvc)[^]

Giải pháp 3

Đã giải quyết.
Nó hoạt động mà không đưa ra tham chiếu bộ điều khiển trong url

JavaScript
url: "SetSelectedHO",

Cảm ơn.

Giải pháp 1

Sử dụng công cụ dành cho nhà phát triển (F12 trong Chrome) để kiểm tra JavaScript mà ứng dụng khách có. Bạn có thể thấy URL được cung cấp cho cuộc gọi không như bạn mong đợi.

Thực hiện điều này…

C#
url: '@Url.Action("SetSelectedHO","../../Controllers/ReportsController")'

… tạo một URL hợp lệ? Có vẻ như bạn đang đặt giá trị bằng chữ chứ không phải giá trị trả về của phương thức @URL.Action.

Giải pháp 4

Điều này hiệu quả với tôi:

url:’../Bộ điều khiển/hành động’

Giải pháp 6

Cảm ơn vì giải pháp 4, hình thức hoạt động của nó, trên laravel trên ubuntu

コメント

タイトルとURLをコピーしました