2016-09-14 3 views
0

저는 Ajax 도우미를 사용하여 내 웹 사이트에서 아래와 같은 여러 가지 양식을 만들었지 만, 어떤 이유로이 단일 양식은 제출 될 때 두 번 게시됩니다. dev 도구에서 즉시 폼이 제출되는 것을 볼 수 있습니다. 둘 사이의 유일한 차이점은 첫 번째 헤더에 추가 헤더 (X-Requested-With : XMLHttpRequest)가 있다는 것입니다.Ajax.BeginForm 컨트롤러에 두 번 게시 (ASP.NET MVC5)

나는 Stackoverflow에 대한 답변을 통해 jquery.unobtrusive 파일에 대해 중복 요청을했을 수도 있지만 소스와 개발자 도구를 확인하고 단 하나의 인스턴스 만 찾을 수 있다고 대답했습니다. 또한 양식을 제출할 수있는 다른 코드를 찾을 수 없습니다.

jquery.unobtrusive 라이브러리를 제거하면 양식은 AJAX 요청이 아닌 한 번만 전송되므로 문제는이 라이브러리의 어딘가에 있으며 양식을 어떻게 설정했는지를 나타냅니다.

내보기는 다음과 같습니다

@using (Ajax.BeginForm("_Action", "Controller", null, new AjaxOptions 
{ 
    HttpMethod = "POST", 
    OnBegin = "beginFunc", 
    OnComplete = "completeFunc", 
    OnSuccess = "successFunc", 
    OnFailure = "failureFunc" 
}, 
new { id = "form-id", @class = "loading-container" })) 
{ 
    @Html.AntiForgeryToken() 
    <div class="form-input"> 
     @Html.EditorFor(m => m.PropertyName) 
     @Html.ValidationMessageFor(m => m.PropertyName) 
    </div> 
    <button type="submit" class="right-arrow">Submit</button> 
} 

내 작업은 다음과 같습니다 이

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/jquery.validate.unobtrusive*", "~/Scripts/jquery.unobtrusive*")); 

는 사람이 하나를 제공 할 수 나는

다음 한 내 BundleConfig.cs에서

[HttpPost] 
[ValidateAntiForgeryToken] 
public JsonResult _Action(ViewModel vm) 
{ 
    // Method code goes here 
} 

디버깅 방법이나 내가 확인할 수있는 것들에 대한 다른 제안?

+0

'OnBegin' 등의 기능은 무엇입니까? –

+0

@AlanBuchanan이 부분보기입니까? 문제는 jquery.validate.unobtrusive를 여러 번 참조하는 것일 수 있습니다. – Sherlock

+0

@StephenMuecke OnBegin 등의 함수는 로더 추가와 같은 시각적 인 작업을 수행하고 있습니다. –

답변

0

페이지에 jquery-unobtrusive-ajax.js가 여러 번 포함되어있을 수 있습니다. 은 양식이 여러 번 게시되도록합니다.

한 번만 포함해야합니다. 당신은 당신이 jQuery를이 체크 아웃 useing된다는 것을 알고있는 경우

+0

고맙습니다.하지만 질문에 명시된 바와 같이 나는 이것을 이미 확인했으며 단 한 번만 참조했습니다. –

+0

@ Alan 마스터 레이아웃 페이지와 Ajax 양식이있는보기를 게시하십시오. –

관련 문제