У меня есть частичное всплывающее окно. Назовем его 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, если возможно, чтобы избежать дублирования.
Любые предложения / помощь были бы очень признательны. Спасибо!