Co spowodowałoby zduplikowanie przesłania formularza Sitecore?

Nov 19 2020

Utworzyłem niestandardowe zgłoszenie na podstawie poniższego modułu:

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

Wszystko poszło nieznośnie na mojej maszynie deweloperskiej, ale po przeniesieniu do naszego środowiska testowego zaczęło przesyłać dwa razy, a tym samym wysyłać dwa e-maile. Dodałem trochę logowania do mojego niestandardowego kodu i jest to zdecydowanie przesłanie tego samego formularza, co SessionId, TemplateId itp. Są identyczne.

Podczas mojego szalonego googlowania natknąłem się na poniższe pytanie dotyczące wymiany stosów, które wygląda na ten sam problem, ale nie było odpowiedzi.

Model przesyłania niestandardowego Sitecore 9 Forms wywołany dwukrotnie

Brakuje mi tego, co dzieje się między przesłaniem formularza a uderzeniem w metodę execute w mojej akcji przesyłania. Wszelkie wskazówki, gdzie mogę rozwiązać problemy, byłyby świetne.

Jestem zaskoczony powyższym, więc każda pomoc byłaby bardzo mile widziana. Daj mi znać, jeśli potrzebujesz więcej informacji.

Twoje zdrowie

Shaun

Ps Po raz pierwszy zadaję pytanie na StackExchange, więc daj mi znać, czy moje pytanie mogłoby być jaśniejsze i / lub bardziej pomocne.

Odpowiedzi

VladIobagiu Nov 19 2020 at 23:13

Proszę wprowadzić kolejne zmiany: otwórz plik \ Views \ FormBuilder \ Form.cshtml .

Dodaj następujące wiersze nad </script>tagiem:

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();

Służy do testowania i zapobiega dwukrotnemu przesłaniu.

Proszę również sprawdzić, czy formularze nie zostały dodane w nagłówku strony, dziwne, dlaczego przesyłają się dwa razy.

AlinaFodor Dec 03 2020 at 18:48

Miałem problemy z przesyłaniem formularzy Sitecore, gdy włączony był Ajax (nie przesyłaj duplikatów). Rozwiązaniem w programie była edycja: \ Views \ FormBuilder \ Form.cshtml i dodanie @ Html.RenderFormStyles () powyżej definicji formularza i @ Html.RenderFormScripts () poniżej definicji formularza w następujący sposób:

@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()