C# MVC JS не работает / работает в режиме частичного просмотра после проверки ajax - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть макет, и в моем макете я вызываю код моего скрипта, который на мой взгляд.

@if (IsSectionDefined("VSscript"))
    {
        @RenderSection("VSscript");
    }

У меня есть вид, и на мой взгляд, у меня есть секция скриптов @section VSscript { У меня также есть форма начала раздела ajax, которая подключается к частичному представлению

@using (Ajax.BeginForm("CreateServiceQuote", "Service", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "ajaxCreate", OnSuccess="quoteSuccess" }))

В части ajax у меня есть код для частичного

@Html.Partial("SQcreate")

всех javascript, которые я использую в VSscript, и это на мой взгляд. В частичном представлении у меня есть только те элементы управления, которые мне нужны. При первом запуске проекта все работает отлично. После запуска 1 набора проверки javascript больше не запускается. Моя ajax onsuccess = "" часть всегда выполняется, но код, необходимый в моем document.ready , не запускается. Вот мой контроллер, он просто вызывает частичное представление, если оно недопустимо.

public ActionResult SQcreate()
        {
            var model = new ServiceModel();
            return PartialView(model);
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult CreateServiceQuote(ServiceModel model)
        {
                if (ModelState.IsValid)
            {

                context.Serv_Quotes.Add(serviceQuote);
                context.SaveChanges();                
                ModelState.Clear();

                return Json("QuoteSuccess", JsonRequestBehavior.AllowGet);
            }            
            return PartialView("SQcreate", serviceModel);
        }

Вот расположение

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Titler</title>
    @Styles.Render("~/Content/css")
    @Styles.Render("~/Content/themes/base/css")
    @Scripts.Render("~/bundles/modernizr")
    @if (IsSectionDefined("VSscript"))
    {
        @*@RenderSection("VSscript");*@
        @RenderSection("VSscript", required: false)

    }    
</head>
<body style="padding-top: 0px;">    
    <div class="container-fluid">
        @RenderBody()
    </div>
    <!-- Script Bundle 1 -->
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jQueryValScripts")
    <!-- ORRR Script Bundle 2 MINIFIED -->
    <!--Scripts.Render("~/bundles/jQueryValScripts")-->
    <!--*Scripts.Render("~/bundles/jqueryui")*-->
    <!--*Scripts.Render("~/bundles/bootstrap")-->
    <!--*Scripts.Render("~/bundles/unobtrusive")*-->
    @*@RenderSection("VSscript", required: false)*@
</body>
</html>

и представление

@model PartNumbers.Models.ServiceModel
@{
    HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
    Layout = "~/Views/Shared/_LayoutPageI.cshtml";
    ViewBag.Title = "Virtual Service";

    //TempData["EmployeeID"] == null ? "" : TempData["EmployeeID"];
}
@section VSscript {
    <script type="text/javascript">
    $(function () {
$("#btnSQopenCon").on("click", function () {
            $("#AddSQcontact").modal("show");
        })

        // jQuery UI Date Picker Class Object Name
        $(".datepickerui").datepicker();

        var modalQ = $('#AddQuote');
        var custDDL = modalQ.find('.modal-body').find('#ServiceVM_CustomerName');
        var sn2DDL = modalQ.find('.modal-body').find('#ServiceVM_SN2');
        $(custDDL).change(function () {
            //alert('testtesttest');
            var cityName = $(custDDL).val();
            var sn2Number = $(sn2DDL).val();
            $.ajax({
                url: '@Url.Action("SearchContactsList", "Service")',
                data: { Customer: cityName, SN2: sn2Number },
                datatype: "json",
                success: function (data) {
                    //var dropdownlist = $('#ContactSearch');
                    var dropdownlist = modalQ.find('.modal-body').find('#ServiceVM_ContactName');
                        //$('#ServiceVM_ContactName');
                    dropdownlist.empty();
                    $.each(data, function () {
                        dropdownlist.append(
                            $('<option></option>').val(this.Value).html(this.Text)
                        );
                    });
                }
            });
        });
})
function quoteSuccess(data) {
        if (data == 'QuoteSuccess') {
            $("#AddQuote").modal("hide");
            window.location.reload();
            //var quoteRefresh =
            //$.ajax({

            //})
        }
function contactSuccess(data) {
        if (data == "ContactSuccess") {
            $("#AddSQcontact").modal("hide");
            var modalQ = $('#AddQuote');
            var custDDL = modalQ.find('.modal-body').find('#ServiceVM_CustomerName').val();
            var sn2DDL = modalQ.find('.modal-body').find('#ServiceVM_SN2').val();

            $.ajax({
                url: '@Url.Action("SearchContactsList", "Service")',
                data: { Customer: custDDL, SN2: sn2DDL },
                datatype: 'json',
                success: function (data) {
                    var dropdownlist = modalQ.find('.modal-body').find('#ServiceVM_ContactName');
                    dropdownlist.empty();
                    $.each(data, function () {
                        dropdownlist.append(
                            $('<option></option>').val(this.Value).html(this.Text)
                        );
                    });
                }
            });
    </script>
}
<!-- CREATE Service Quote -->
@using (Ajax.BeginForm("CreateServiceQuote", "Service", new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "ajaxCreate", OnSuccess="quoteSuccess" }))
{
    <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">&times;</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">&times;</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>
}

1 Ответ

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

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

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