C# Данные контроллера на JavaScript Но при использовании RETURN JSON Модальный исчезает / Refre sh ajax модальный после успеха - PullRequest
0 голосов
/ 04 марта 2020

У меня есть некоторые данные в моем модале, которые я хотел бы передать javascript. Когда я использую 'return json', который работает, НО я теряю свой модал. Я больше не могу получить какие-либо средства управления на модал, который я использовал. Это просто превращается в пустой модал. На моем ajax полных я догадываюсь, может быть, я мог бы перезагрузить элементы управления в моем частичном просмотре или передать данные на мой JS другим способом, отличным от return json.

    @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" style="z-index:1060;">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h3 class="text-center"><b>Create Contact</b></h3>                    
                </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>
}
    function contactSuccess(data) {
        if (data.Status == "Created") {
            $("#AddSQcontact").modal("hide");
            var modalX = $('#' + data.Modal);
            var newObj = data.Object;
            var custDDL = modalX.find('.modal-body').find('#ServiceVM_CustomerName').val();
            var sn2DDL = modalX.find('.modal-body').find('#ServiceVM_SN2').val();
            var partI = displayContactsDDL(custDDL, sn2DDL, modalX, newObj);
        }
    }
    function displayContactsDDL(customer=null, sn2=null, modalID=null, newObj=null) {
        return $.ajax({
            url: '@Url.Action("SearchContactsList", "Service")',
            data: { customer: customer, sn2: sn2 },
            dataType: 'json',

        }).done(function (data) {
            var dropdown = modalID.find('.modal-body').find('#ServiceVM_ContactName');
            dropdown.empty();
            $.each(data, function () {
                dropdown.append(
                    $('<option></option>').val(this.Value).html(this.Text)
                );
            });
            if ($.isNumeric(newObj)) {
                dropdown.val(newObj);
                displayContactData(newObj, modalID)
            }
        });
    }
[HttpPost]
        [ValidateAntiForgeryToken]    
        public ActionResult CreateSQcontact(ServiceModel model)
        {
            string action = "";
            ServiceModel serviceModel = TempData["ServModel"] == null ? serviceModel = new ServiceModel() : TempData["ServModel"] as ServiceModel;
            ModalResponse myData = null;
            if (TempData["MR"] != null)
            {
                TempData["MR"] = TempData["MR"] as ModalResponse;
                myData = TempData["MR"] as ModalResponse;
            }

            if (ModelState.IsValid)
            {
                int customerID = 0;
                var numericPhone = "";                
                if(model.ServiceContact.ContactPhone != null)
                {
                    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,
                    Email = model.ServiceContact.ContactEmail,
                    SN2 = model.ServiceContact.ContactSN2,
                    CustomerID = customerID
                };

                context.Serv_Contacts.Add(contact);
                context.SaveChanges();
                ModelState.Clear();
                if(myData != null)
                {
                    //myData.Object = contact.Contact;
                    myData.Object = contact.Contact_ID;
                    TempData["MR"] = myData as ModalResponse;
                }
                serviceModel = LoadVirtualService(serviceModel);
                TempData["ServModel"] = serviceModel;

                //ModalResponse parameter = TempData["MR"]==null ? parameter=new ModalResponse() : TempData["MR"] as ModalResponse;
                //myData = myData == null ? myData = new ModalResponse() : myData;
                myData = myData ?? (myData = new ModalResponse());

                return Json(myData, JsonRequestBehavior.AllowGet);
                string serializedData = JsonConvert.SerializeObject(myData);
               // return new HtmlString(serializedData.ToString());
            }

            serviceModel = LoadVirtualService(serviceModel);
            TempData["ServModel"] = serviceModel as ServiceModel;

            return PartialView("SQcontact", serviceModel);
        }

1 Ответ

0 голосов
/ 04 марта 2020

Вот мое решение, оно у меня работает!

CONTROLLER
myData = myData ?? (myData = new ModalResponse());
string serializedData = JsonConvert.SerializeObject(myData);
ViewBag.SMR = serializedData;
return PartialView("SQcontact", serviceModel);

VIEW
@Html.Hidden("SMRdata", (object)ViewBag.SMR)

JAVASCRIPT
function contactSuccesses() {

            var modalC = $('#AddSQcontact');
            ///var txtContactName = modalC.find('.modal-body').find('#ServiceContact_ContactName').val();

            var txtsmrdata = modalC.find('.modal-body').find('#SMRdata').val();
            var jsonObj = JSON.parse(txtsmrdata);
            var modalX = "", status = "", objID = 0;

            if (jsonObj != null || jsonObj != "") {
                status = jsonObj.Status;

                if (jsonObj.Modal != "") {
                    modalX = $('#' + jsonObj.Modal);
                }
                if (jsonObj.Object != 0) {
                    objID = jsonObj.Object;
                }
            }

            if (status == "Created") {
               // alert('in here');
                if (modalX != "") {
                    var custDDL = modalX.find('.modal-body').find('#ServiceVM_CustomerName').val();
                    var sn2DDL = modalX.find('.modal-body').find('#ServiceVM_SN2').val();
                    var nextPart = true;
                }
                if (nextPart) {
                    displayContactsDDL(custDDL, sn2DDL, modalX, objID);
                }
            }
    }
...