. Net Ядро ненавязчиво Ajax OnSuccess - PullRequest
0 голосов
/ 30 мая 2020

У меня есть частичное всплывающее окно. Назовем его AddContactView, который добавляет контакты в таблицу, data- ajax -success сделает некоторые javascript для автоматического заполнения некоторых полей в основном представлении тем, что я только что добавлено в частичном виде. У меня есть много основных экранов, которым нужна такая же функциональность, как открытие частичного всплывающего окна добавления контактов для добавления контактов, а затем автоматического заполнения полей в основном представлении.

Проблема:

Есть несколько основных представлений с разными полями, например, для некоторых основных представлений нужно будет автоматически заполнять электронную почту, в других не будет электронной почты, поэтому поля меняются. Я пытаюсь повторно использовать этот AddContactView, но в функции data- ajax -success, потому что некоторые основные экраны различаются по полям, я не совсем уверен, как заставить это работать эффективно, чтобы мне не приходилось продублируйте кучу кода. Например, MainView1, MainView2 и MainView3 должны иметь всплывающее окно AddContactView, но в случае успеха MainView1 и MainView2 различаются полями

Что было бы решением этой проблемы без необходимости создания 3 отдельных AddContactView с соответствующими данными - ajax -функция успеха для каждого представления?

Пример кода:

MainView1:

<form asp-action="SaveForm" asp-controller="Controller"
      data-ajax="true" data-ajax-method="POST"

@{
     @Html.LabelFor(Model.Email)
     @Html.TextBoxFor(Model.Email)
     // onClick will just open a pop-up to the AddContactView
     <button id="btnAddNewContact" onClick="addNew();">Add Contact</button>
     ----- more code ------
 }

</form>

MainView2:

<form asp-action="SaveForm2" asp=controller="Controller2"
      data-ajax="true" data-ajax-method="POST"
@{
     @Html.LabelFor(Model.Phone)
     @Html.TextBoxFor(Model.Name)
     // onClick will just open a pop-up to the AddContactView
     <button id="btnAddNewContact" onClick="addNew();">Add Contact</button>
     ------- more code --------
 }

</form>

AddContactView:

<form asp-action="AddContact" asp-controller="SomeController"
      data-ajax="true" data-ajax-method="POST"
      data-ajax-success="onAddContactSuccess(data)"

@{
     ---- some fields -----
 }

JS:

onAddContactSuccess(data) {
    if(isNaN(data.Id) == false) {
        // if main screen has email field then populate email else don't
        $("#Email").val(data.Email);
       // so forth 
    } 
}

Это только самые голые кости представлений и js. AddContactView всегда будет иметь одни и те же поля, и по крайней мере 3 экрана будут использовать это, поэтому я не хочу создавать дубликаты одного и того же AddContactView для 3 разных экранов, а затем иметь вызов data- ajax -success 3 разных onAddContactSuccess, если возможно, чтобы избежать дублирования.

Любые предложения / помощь были бы очень признательны. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...