Sitecore 양식이 중복 제출을하는 원인은 무엇입니까?

Nov 19 2020

아래 모듈을 기반으로 사용자 지정 제출을 만들었습니다.

https://www.nishtechinc.com/Blog/2018/April/Send-E-mail-Action-to-Sitecore-9-Forms

그것은 내 개발 컴퓨터에서 모두 엉망진창 이었지만 우리의 스테이징 환경으로 이동했을 때 두 번 제출하기 시작하여 두 개의 이메일을 보냈습니다. 내 사용자 정의 코드에 일부 로깅을 추가했으며 SessionId, TemplateId 등이 모두 동일한 것과 동일한 형식의 제출입니다.

열광적 인 인터넷 검색 중에 동일한 문제처럼 보이는 스택 교환에 대한 아래 질문을 보았지만 답변이 제공되지 않았습니다.

Sitecore 9 Forms 사용자 지정 제출 모델이 두 번 호출 됨

내가 놓친 부분은 제출되는 양식과 제출 작업에서 실행 메소드를 누르는 사이에 일어나는 일입니다. 문제를 해결할 수있는 위치에 대한 모든 조언은 좋을 것입니다.

나는 위의 내용에 당황하므로 어떤 도움을 주시면 대단히 감사하겠습니다. 더 많은 정보가 필요하면 알려주세요.

건배

추신 StackExchange에 대한 질문은 이번이 처음이므로 내 질문이 더 명확하거나 도움이 될 수 있는지 알려주십시오.

답변

VladIobagiu Nov 19 2020 at 23:13

다음 변경을 수행 하십시오. \ Views \ FormBuilder \ Form.cshtml 파일을 엽니 다 .

</script>태그 위에 다음 줄을 추가합니다 .

jQuery.fn.preventDoubleSubmission = function() {
 $(this).on('submit',function(e){ var $form = $(this); if ($form.data('submitted') === true) {
                  alert('The form is already submitted. Please wait.');
                  e.preventDefault();
                  $form.find(':submit').attr('disabled','disabled'); } else { if($form.valid()) {
                                                $form.data('submitted', true); } } }); return this; }; $("form[data-sc-fxb='@Model.ItemId']").preventDoubleSubmission();

이것은 테스트 용이며 두 번 제출하는 것을 방지합니다.

또한 페이지 헤드에 양식이 추가되지 않았는지 확인하십시오. 두 번 제출하는 이유가 이상합니다.

AlinaFodor Dec 03 2020 at 18:48

Ajax가 활성화되었을 때 Sitecore 양식 제출에 몇 가지 문제가있었습니다 (복제 제출은 아님) 의 해결책은 \ Views \ FormBuilder \ Form.cshtml을 편집하고 양식 정의 위에 @ Html.RenderFormStyles ()를 추가 하고 양식 정의 아래에 @ Html.RenderFormScripts ()를 다음과 같이 추가하는 것입니다.

@Html.RenderFormStyles()

@{
    using (Html.BeginRenderRouteForm(Model, IsPost))
    {
        @Html.AntiForgeryToken()
        @Html.Hidden(AttributeNames.FormItemId, Model.ItemId)
        @Html.ValidationSummary(true)
        @Html.RenderFields(Model)
        <input type="hidden" data-sc-fxb-condition value='@Html.RenderConditions(Model)' />
    }
}

@Html.RenderFormScripts()