【发布时间】:2020-01-27 18:44:49
【问题描述】:
我在 C# 和 ASP.NET MVC 中有一个 ajax 模态,我正在从另一个模态内部创建一个新对象。我有验证工作,但我的模式在它应该保持打开状态时消失(关闭)。
我在我的 ajax onsuccess 调用中有我的 .modal(‘hide’) 我也在 oncomplete 上尝试过它我只希望它在它无效时运行。同样,一旦完成并成功,我希望它使用新添加的数据刷新第一个模式。
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#AddQuote">New Service Quote</button>
<!-- CREATE Service Quote -->
@using (Ajax.BeginForm("CreateServiceQuote", "Service", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "ajaxCreate" }))
{
<div class="modal" id="AddQuote" tabindex="-1" role="dialog" aria-labelledby="lblAjaxCreate" aria-hidden="true">
<div class="modal-dialog" role="document" style="width:750px;">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title text-center"><b>New Service Quote</b></h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" id="ajaxCreate">
@Html.Partial("SQcreate")
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
<input type="submit" class="btn btn-success" value="Create Quote" />
</div>
</div>
</div>
</div>
}
<!-- CREATE CONTACT -->
@using(Ajax.BeginForm("CreateSQcontact", "Service", new AjaxOptions() { HttpMethod="POST", UpdateTargetId="ajaxContact", OnSuccess="contactSuccess" }))
{
<div class="modal" id="AddSQcontact" tabindex="-1" role="dialog" aria-labelledby="lblAjaxContact" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="text-center"><b>Create Contact</b></h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" id="ajaxContact">
@Html.Partial("SQcontact")
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
<input type="submit" class="btn btn-success" value="Create Contact" />
</div>
</div>
</div>
</div>
}
<!— SQcreate has -->
<button type="button" class="btn btn-info" id="btnSQopenCon" >New Contact</button>
$("#btnSQopenCon").on("click", function () {
$("#AddSQcontact").modal("show");
})
function contactSuccess() {
$("#AddSQcontact").modal("hide");
}
public ActionResult SQcontact()
{
var model = new ServiceModel();
return PartialView(model);
}
[HttpPost]
[ValidateAntiForgeryToken] // KNOW WHICH CONTACT TABLE TO USE
public ActionResult CreateSQcontact(ServiceModel model)
{
// Add Email Validation
if (ModelState.IsValid)
{
int customerID = 0;
// 1 way to remove all non numbers
//Regex.Replace(oldString, "[^.0-9]", "");
var numericPhone = new string(model.ServiceContact.ContactPhone.Where(char.IsNumber).ToArray());
if (model.ServiceContact.ContactCustomer != null)
{
customerID = context.Customers
.Where(c => c.Name == model.ServiceContact.ContactCustomer)
.Select(x => x.ID).FirstOrDefault();
}
var contact = new Serv_Contacts()
{
Contact = model.ServiceContact.ContactName,
Phone = model.ServiceContact.ContactPhone,
PhoneNumeric = numericPhone,
Fax = model.ServiceContact.ContactFax,
Email = model.ServiceContact.ContactEmail,
SN2 = model.ServiceContact.ContactSN2,
CustomerID = customerID
};
context.Serv_Contacts.Add(contact);
context.SaveChanges();
TempData["Success"] = "Contact added successfully!";
ViewBag.ValidMessage = "Contact added successfully!";
//string jsonstr = "contactsuccess";
ModelState.Clear();
//return PartialView("SQcreate", model);
//return Json(jsonstr);
return new EmptyResult();
}
LoadVSmodel(model);
return PartialView("SQcontact", model);
}
【问题讨论】:
标签: c# ajax asp.net-mvc