TheBigBearNow Ответов: 0

Модальная проверка C# MVC открывается в новом окне


Мой вопрос заключается в том, что в настоящее время у меня есть модал с элементами управления на нем. Когда я нажимаю кнопку Сохранить, проверка должна отображаться в модальном режиме. вместо этого он открывает новое окно с элементами управления и всей проверкой, которая должна быть в модальном режиме.

Также в этом представлении оба

<input type="button" class="openModal btn btn-danger" data-quoteid="@Model.ListQuotes[i].QuoteID" value="Edit" />

 <button type="button" class="openOtherModal btn-success" data-quoteid="@Model.ListQuotes[i].QuoteID">
                                Test Val
                            </button>

@using (Ajax.BeginForm("SQUpdateRecord", "Service", new AjaxOptions() { HttpMethod="POST", UpdateTargetId="modalTestSQ" }))
{
    <div>
        <div class="modal" id="modalTestSQ" tabindex="-1" role="dialog" aria-labelledby="lblSQmodal" aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h3 class="modal-title">Service Quote Details</h3>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">×</span>
                        </button>
                    </div>
                    <div class="modal-body" id="modalOpen">
                        @Html.Partial("SQupdate")
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                        <input type="submit" class="btn btn-primary" value="Save" />
                    </div>
                </div>
            </div>
        </div>
    </div>
}

@using (Ajax.BeginForm("UpdateServiceTables", "Service", new AjaxOptions() { HttpMethod="POST", UpdateTargetId="ajaxit" }))
{                                                                                                       //modalInnerSQ
    @Html.AntiForgeryToken()
    <div class="modal" id="modalInnerSQ" tabindex="-1" role="dialog" aria-labelledby="lblSQmodal" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                @* model = Model.ServiceVM  SQUpdateRecord  <!-- AjaxOptions() { OnSuccess="OnSuccess", OnFailure="OnFailure", OnComplete="OnComplete"} "modalInnerSQ"-->*@
                @*@using (Html.BeginForm("UpdateServiceTables", "Service", FormMethod.Post, htmlAttributes: new { id="modalSQupdate", name="frmSQupdate" }))
                {*@
                <div class="modal-header">
                    <h4 class="modal-title">Service Quote Details</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">×</span>
                    </button>
                </div>
                <div class="modal-body" id="ajaxit">
                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                    @Html.HiddenFor(x => x.ServiceVM.QuoteID)
                    @Html.HiddenFor(x => x.ServiceVM.CustomerID)
                    @Html.HiddenFor(x => x.ServiceVM.ContactID)
                    @Html.HiddenFor(x => x.ServiceVM.EmpID)

                    <div class="form-group">
                        @Html.LabelFor(x => x.ServiceVM.CustomerName, htmlAttributes: new { @class = "control-label col-3" })
                        <div class="col-9">
                            @Html.TextBoxFor(x => x.ServiceVM.CustomerName, new { @class = "form-control", name = "txtCustName" })
                            @Html.ValidationMessageFor(x => x.ServiceVM.CustomerName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="form-group">
                        @Html.LabelFor(x => x.ServiceVM.MachineCount, htmlAttributes: new { @class = "control-label col-3" })
                        <div class="col-9">
                            @Html.TextBoxFor(x => x.ServiceVM.MachineCount, new { @class = "form-control", name = "txtMcount" })
                            @Html.ValidationMessageFor(x => x.ServiceVM.MachineCount, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="form-group">
                        @Html.LabelFor(x => x.ServiceVM.MachinePrice, htmlAttributes: new { @class = "control-label col-3" })
                        <div class="col-9">
                            @Html.TextBoxFor(x => x.ServiceVM.MachinePrice, new { @class = "form-control", name = "txtMprice" })
                            @Html.ValidationMessageFor(x => x.ServiceVM.MachinePrice, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="form-group">
                        @Html.LabelFor(x => x.ServiceVM.MachineAddress, htmlAttributes: new { @class = "control-label col-3" })
                        <div class="col-9">
                            @Html.TextBoxFor(x => x.ServiceVM.MachineAddress, new { @class = "form-control", name = "txtMaddress" })
                            @Html.ValidationMessageFor(x => x.ServiceVM.MachineAddress, "", new { @class = "text-danger" })
                        </div>
                    </div>
....
<div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                    @* SAVE BUTTON  [ <button} or form <input> ]*@
                    <input type="submit" class="btn btn-primary" value="Save" />
                    @*@Html.ActionLink("Save", "UpdateServiceTables", "Service", new { model = Model }, new { @class="btn btn-primary" })*@
                </div>
[/code]

Here is JavaScript both are the same .openModal and .openOtherModal
[code]
var jsonobj = {};

        $('.openModal').on('click', function () {
            var quoteid = $(this).attr("data-quoteid");
            $.ajax({
                type: "GET",
                url: "/Service/GetServiceQuote/",
                contentType: "application/json; charset=utf-8",
                data: { "id": quoteid },
                datatype: "Json",
                success: function (data) {

                    if (data != null) {
                        jsonobj =
                            {
                                "quoteid": data.QuoteID,
                                "customerid": data.CustomerID,
                                "customername": data.CustomerName,
                                "listofsn2s": data.ListOfSN2s,
                                "machinecount": data.MachineCount,
                                "machineprice": data.MachinePrice,
                                "machineaddress": data.MachineAddress,
                                "machinecity": data.MachineCity,
                                "machinestate": data.MachineState,
                                "machinezipcode": data.MachineZipCode,
...
                        PopulateModalJSON(jsonobj);

 function PopulateModalJSON(jsonObject) {
        var modalA = $('#modalInnerSQ');
        var body = $('.modal-body');
        var quoteid = modalA.find(body).find('#ServiceVM_QuoteID');
        var custid = modalA.find(body).find('#ServiceVM_CustomerID');
        var cust = modalA.find(body).find('#ServiceVM_CustomerName');
        var listsn2s = modalA.find(body).find('#ServiceVM_ListOfSN2s');
        var mcount = modalA.find(body).find('#ServiceVM_MachineCount');
        var mprice = modalA.find(body).find('#ServiceVM_MachinePrice');
...
 function OpenServiceQuoteModal() {
        $('#modalInnerSQ').modal('show');
    }
[/code]
The Model is a normal model
 [Display(Name = "Customer Name")]
        [Required(ErrorMessage = "Customer Name MUST be filled out.")]
        public string CustomerName { get; set; }

Here is the Controller
[code]
        [HttpPost]
        public ActionResult UpdateServiceTables(ServiceModel model)
        {
            model.Customers = GetCustomersSQ();
            model.SerialNumbers = GetSerialNumbersSQ();
            model.City = GetCitiesSQ();
            model.State = GetStatesSQ();

            model.Settings = GetTableSettingsSQ();

            if (ModelState.IsValid)
            {
                var quote = context.Serv_Quotes.Where(x => x.QuoteID == model.ServiceVM.QuoteID).FirstOrDefault();
                quote.QuoteID = model.ServiceVM.QuoteID;
                quote.CustomerName = model.ServiceVM.CustomerName;
                quote.ListOfSN2s = model.ServiceVM.ListOfSN2s;
                quote.MachineCount = model.ServiceVM.MachineCount;
                quote.PricePerMachine = model.ServiceVM.MachinePrice;
                quote.Address = model.ServiceVM.MachineAddress;
             
                ////UPDATE Quote Record
                context.Entry(quote).State = EntityState.Modified;
                context.SaveChanges();

               
                return RedirectToAction("SearchGet", model);
                //return RedirectToAction("Search", model);
            }
            else
            {
                //return View("VirtualService", model);
                //return RedirectToAction("GetServiceQuote", new { id = model.ServiceVM.QuoteID });
                return PartialView("ModalSQUpdate", model);
            }
            //return Json(model, JsonRequestBehavior.DenyGet);            
        }
 public JsonResult GetServiceQuote(int? id)
        {
            if (id == null) { return null; }
                
            var vm = new ServiceReportViewModel();
            var model = context.Serv_Quotes.Where(x => x.QuoteID == id).FirstOrDefault();                    
            vm.QuoteID = model.QuoteID;
            vm.CustomerID = model.CustomerID.ToString();
            vm.CustomerName = model.CustomerName;
            vm.MachineCount = model.MachineCount;
            vm.MachinePrice = model.PricePerMachine;
            vm.MachineAddress = model.Address;
            vm.MachineCity = model.City;
            vm.MachineState = model.State;
            vm.MachineZipCode = model.ZipCode;
            vm.MachineCountry = model.Country;
            
            return Json(vm, JsonRequestBehavior.AllowGet);
        }
части каждого модального для частичного и одного в том же представлении.

Я знаю, что очень, очень близок к тому, чтобы это выяснить.. просто не знаю, в чем именно заключается проблема. Модальное превращается в новое окно с тем, что должно быть в модальном

Что я уже пробовал:

Я уже некоторое время возился с этим, пробуя кучу разных способов, и до сих пор ничего не понял.
Могу ли я иметь модальный вид внутри моего основного вида? или мне нужен модал, чтобы быть в отдельном partialview.
Я пробовал это в обоих направлениях, и я получил тот же результат для обоих.
Вот основной вид с кнопками 1 модальный внутри того же вида внизу другой модальный в отдельном частичном.

Kornfeld Eliyahu Peter

Здесь есть способ прочитать очень много кода... Вы должны сократить до частей, действительно имеющих значение...
Тем временем вы можете найти множество сообщений, выполнив поиск "mvc modal popup"...

Richard Deeming

Попробуйте поместить свои формы внутрь modal-body элементы.

Если он все еще не работает, проверьте консоль разработчика Вашего браузера на наличие ошибок.

0 Ответов