Asp.net MVC Ajax 호출이 컨트롤러 메서드를 호출하지 않음

brian4342

ASP.net MVC 응용 프로그램을 만들고 싶습니다. 사용자가 링크를 클릭하면 ajax 호출을 수행하여 컨트롤러에 데이터를 보낸 다음 다른 데이터를 다시보기로 반환합니다.

이것은 컨트롤러에서 호출하고 싶은 방법입니다.

public JsonResult GetImage(string url)
        {
            Image image = Image.FromFile(url, true);

            byte[] byteImage = converter.ImageToBytes(image);

            return Json(new { byteImage }, JsonRequestBehavior.AllowGet);
        }

다음은 컨트롤러 위치입니다.

08983ClassLibrary\EpostASP\Controllers\CustomerController.cs

이것은 내 Ajax 호출입니다.

$.ajax({
            url: "~/Controllers/CustomerController/GetImage/",
            type: 'POST',
            contentType: 'application/json',
            data: "url="+url,
            success: function (image) {
                document.getElementById("image").src = "data:image/png;base64," + image;
                showImage();
            }
        });

코드에 중단 점을 배치하면 ajax 호출을 밟은 다음 컨트롤러에 도달하지 않고 오류가 발생하지 않는 것을 볼 수 있습니다. 어떤 아이디어?

브레인리스 코더

주요 문제는 여기에 있습니다.

url: "~/Controllers/CustomerController/GetImage/",

당신은 볼 ~당신이 ASP.net 서버 측 경로에이를 사용할 때, 그것은 현재의 서버 응용 프로그램 폴더 위치로 대체됩니다, 즉, 서버 측 문자입니다. 이것은 전통적인 ASP.Net 방식이었습니다. 이 줄에는 2 개의 오류가 있습니다.

  1. 이 URL은 작동하지 않습니다. JS의 문자열 내부에 있으므로 ASP.net은 서버 경로로 대체해야한다는 것을 알지 못합니다. 이제 두 번째 오류가 발생합니다. ASP.net이이를 감지하고 변환 할 수 있어도 여전히 작동하지 않습니다. 내가 2에서 설명한 요점 때문에-

  2. ASP.net MVC를 사용하고 있기 때문에 좋은 방법이 아닙니다. 보다 일반적인 MVC 방법은 경로를 만들고 해당 경로를 사용하는 것입니다. ASP.net에서는 페이지 (.aspx, .ascx)에 직접 링크 할 수있는 옵션이 있기 때문입니다. 그러나 MVC 컨트롤러 작업은 그렇게 연결할 수 없습니다. 따라서 경로 구성에서 경로를 Global.asax만든 다음 (확인 ) 해당 경로를 여기에서 URL로 사용해야합니다. 기본적으로 MVC 앱은 다음 형식을 지원합니다.

    <host>/{controller}/action

    예 -

    'localhost/Home/Index`
    

HomeController기본적으로 컨트롤러는 후행 문자열을 무시해야하기 때문에 작성하지 않았습니다 Controller.

나는 이것이 도움이 되었기를 바라며 현재 상황에 대한 해결책을 찾고 있다면 이것을 시도해보십시오 (테스트하지는 않았지만 다음과 같아야합니다)-

 $.ajax({
        url: "Customer/GetImage",
        type: 'POST',
        contentType: 'application/json',
        data: "url="+url,
        success: function (image) {
            document.getElementById("image").src = "data:image/png;base64," + image;
            showImage();
        }
    });

하지만 안전한 편이 되려면 다음을 사용해야합니다.

[HttpPost]
public JsonResult GetImage(string url)
{
}

업데이트 : maproute (코멘트에서 요청한대로)는 이러한 경로 중 하나에서 작동합니다. 그러나 다른 경로 구성으로도 작동 할 수 있습니다. 라우트 구성은 매우 유연하며, 작동하는 방식으로 라우트를 설정하는 것입니다. -

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            "...",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

        routes.MapRoute(
            "...",                                              // Route name
            "{controller}/{action}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

        routes.MapRoute(
            "...",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Customer", action = "GetImage", id = "" }  // Parameter defaults
        );
        routes.MapRoute(
            "...",                                              // Route name
            "Customer/GetImage/{id}",                           // URL with parameters
            new { controller = "Customer", action = "GetImage", id = "" }  // Parameter defaults
        );
        ..... //all of these mentioned route will land on the same url 
    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ASP.NET MVC에서 ajax를 사용하지 않고 View에서 컨트롤러의 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

ASP.NET MVC 5.0 컨트롤러 메서드에 인수를 추가하면 JQuery Datatable Ajax 호출이 중단됨

분류에서Dev

컨트롤러 작업을 호출하지 않는 경로 별 ASP.NET MVC 웹 API 메시지 처리기

분류에서Dev

MVC 5에서 컨트롤러를 호출하지 않는 aJax 포스트 백

분류에서Dev

Asp.net MVC 프로젝트에서 ajax를 통해 작업을 호출하지 않음

분류에서Dev

ASP.NET MVC : 다른 컨트롤러에서 컨트롤러 호출

분류에서Dev

Ajax 호출이 컨트롤러 메소드에 도달하지 않음

분류에서Dev

컨트롤러의 어떤 뷰 메서드에서 ASP.NET MVC를 호출했는지 확인

분류에서Dev

MVC 반환 뷰가 컨트롤러를 호출하지 않음

분류에서Dev

asp.net mvc의 컨트롤러에서 모델 메서드를 호출하는 방법

분류에서Dev

debug = "false"인 경우 Ajax 호출이 작동하지 않음 (ASP.NET MVC)

분류에서Dev

ASP.NET MVC 컨트롤러에 대한 호출이 DelegatingHandler를 실행하지 않는 이유는 무엇입니까?

분류에서Dev

ASP.NET의 AJAX 호출이 서버 측 메서드를 실행하지 않음

분류에서Dev

Asp.net MVC, Ajax를 사용하지 않고보기에서 컨트롤러로 어레이 전달

분류에서Dev

ASP.NET LinkButton이 'OnCommand'이벤트를 호출하지 않음

분류에서Dev

ASP.NET 페이지에서 HTML 제출 단추를 가져와 MVC 컨트롤러 클래스에서 컨트롤러 메서드를 호출하는 방법

분류에서Dev

asp.net mvc 4에서 C #을 사용하여 컨트롤러에서 메서드 호출 계산

분류에서Dev

C # ASP.net Razor AJAX 호출 메서드가 작동하지 않음

분류에서Dev

ASP MVC에서 Ajax 호출이 제대로 작동하지 않음

분류에서Dev

Spring MVC 컨트롤러는 Ajax Post에서 호출되지 않았습니다.

분류에서Dev

.NET 4 MVC의 한 컨트롤러에서 다른 컨트롤러의 메서드를 호출하는 방법

분류에서Dev

.NET 4 MVC의 한 컨트롤러에서 다른 컨트롤러의 메서드를 호출하는 방법

분류에서Dev

ASP.Net MVC4 컨트롤러 메서드에서 Task <T>를 반환하는 메서드를 어떻게 호출합니까?

분류에서Dev

ASP.Net보기를 리디렉션하지 않고 컨트롤러에서 메서드를 호출하는 방법

분류에서Dev

$ .ajax 메서드가 컨트롤러 작업 메서드를 호출하지 않습니다.

분류에서Dev

작업 후 AngularJS 컨트롤러가 MVC 컨트롤러를 호출하지 않음

분류에서Dev

ASP.NET MVC-뷰 내에서 컨트롤러 메서드를 호출하여 다른 여러 뷰로 리디렉션하려면 어떻게합니까?

분류에서Dev

Asp.net mvc4 컨트롤러에서 다른 폴더의 뷰 호출

분류에서Dev

JavaScript에서 올바르게 컨트롤러 호출-ASP.NET MVC

Related 관련 기사

  1. 1

    ASP.NET MVC에서 ajax를 사용하지 않고 View에서 컨트롤러의 메서드를 호출하는 방법은 무엇입니까?

  2. 2

    ASP.NET MVC 5.0 컨트롤러 메서드에 인수를 추가하면 JQuery Datatable Ajax 호출이 중단됨

  3. 3

    컨트롤러 작업을 호출하지 않는 경로 별 ASP.NET MVC 웹 API 메시지 처리기

  4. 4

    MVC 5에서 컨트롤러를 호출하지 않는 aJax 포스트 백

  5. 5

    Asp.net MVC 프로젝트에서 ajax를 통해 작업을 호출하지 않음

  6. 6

    ASP.NET MVC : 다른 컨트롤러에서 컨트롤러 호출

  7. 7

    Ajax 호출이 컨트롤러 메소드에 도달하지 않음

  8. 8

    컨트롤러의 어떤 뷰 메서드에서 ASP.NET MVC를 호출했는지 확인

  9. 9

    MVC 반환 뷰가 컨트롤러를 호출하지 않음

  10. 10

    asp.net mvc의 컨트롤러에서 모델 메서드를 호출하는 방법

  11. 11

    debug = "false"인 경우 Ajax 호출이 작동하지 않음 (ASP.NET MVC)

  12. 12

    ASP.NET MVC 컨트롤러에 대한 호출이 DelegatingHandler를 실행하지 않는 이유는 무엇입니까?

  13. 13

    ASP.NET의 AJAX 호출이 서버 측 메서드를 실행하지 않음

  14. 14

    Asp.net MVC, Ajax를 사용하지 않고보기에서 컨트롤러로 어레이 전달

  15. 15

    ASP.NET LinkButton이 'OnCommand'이벤트를 호출하지 않음

  16. 16

    ASP.NET 페이지에서 HTML 제출 단추를 가져와 MVC 컨트롤러 클래스에서 컨트롤러 메서드를 호출하는 방법

  17. 17

    asp.net mvc 4에서 C #을 사용하여 컨트롤러에서 메서드 호출 계산

  18. 18

    C # ASP.net Razor AJAX 호출 메서드가 작동하지 않음

  19. 19

    ASP MVC에서 Ajax 호출이 제대로 작동하지 않음

  20. 20

    Spring MVC 컨트롤러는 Ajax Post에서 호출되지 않았습니다.

  21. 21

    .NET 4 MVC의 한 컨트롤러에서 다른 컨트롤러의 메서드를 호출하는 방법

  22. 22

    .NET 4 MVC의 한 컨트롤러에서 다른 컨트롤러의 메서드를 호출하는 방법

  23. 23

    ASP.Net MVC4 컨트롤러 메서드에서 Task <T>를 반환하는 메서드를 어떻게 호출합니까?

  24. 24

    ASP.Net보기를 리디렉션하지 않고 컨트롤러에서 메서드를 호출하는 방법

  25. 25

    $ .ajax 메서드가 컨트롤러 작업 메서드를 호출하지 않습니다.

  26. 26

    작업 후 AngularJS 컨트롤러가 MVC 컨트롤러를 호출하지 않음

  27. 27

    ASP.NET MVC-뷰 내에서 컨트롤러 메서드를 호출하여 다른 여러 뷰로 리디렉션하려면 어떻게합니까?

  28. 28

    Asp.net mvc4 컨트롤러에서 다른 폴더의 뷰 호출

  29. 29

    JavaScript에서 올바르게 컨트롤러 호출-ASP.NET MVC

뜨겁다태그

보관