Вызовите функцию javascript из макета с кодом javascript из основного представления asp.net core - PullRequest
0 голосов
/ 04 июля 2018

У меня есть частичное представление, что загрузка данных из таблицы базы данных. Мне нужно из частичного представления передавать данные в функцию, которая находится на макете и вызывать ее. Однако я слышал, что секции визуализации не работают в ядре asp.net в частичных представлениях. Но мне действительно нужно вызывать функцию из макета.

Общая логика такова. Загружается частичное представление, в поле которого пользователь выбирает строку, нажимает кнопку удаления. Кнопка удаления отправляет данные в контроллер, контроллер удаляет запись и возвращает объект json. Затем код вызывается из макета.

Мой код, макет нижнего колонтитула:

<script src="~/js/jquery-3.3.1.min.js"></script>
    <script src="~/js/jquery.unobtrusive-ajax.min.js"></script>
    <script src="~/js/jquery.validate.min.js"></script>
    <script src="~/js/jquery.validate.unobtrusive.min.js"></script>

    <script src="~/js/bootstrap.min.js"></script>
    <script src="~/js/respond.min.js"></script>
    <script src="~/js/bootstrap-combobox.js"></script>

<script>
        $(document).ready(function () {
function AjaxLoad(data) {

                console.log(data);
                console.log('*********');

                if (data.action == "error") {
                    alert(data.message);
                    return;
                }
                else if (data.action == "load") {
                    CurrentTable = data.table
                }

                if (data.page != null || data.page != undefined) {
                    PageIndex = data.page;
                }

                $.ajax({
                    url: "/Admin/ListView",
                    type: "POST",
                    data: {
                        Table: CurrentTable,
                        Page: PageIndex
                    },
                    dataType: "html",
                    beforeSend: function () {
                        $('#PartialViewId').html("<p>" +  "@NanoWiki.Resources.Translations.Loading" + " \"" + LangCurrentTable + "\"...</p>");
                    },
                    success: function (data) {
                        $("#TableId").html("<p>" + LangCurrentTable + "</p>");
                        $("#PartialViewId").html(data);
                    },
                    error: function () {
                        $("#PartialViewId").html("@NanoWiki.Resources.Translations.Error" + ":" + LangCurrentTable);
                    }
                });

                $("#AddId").css("visibility","visible");
            };

  });
    </script>

@if (IsSectionDefined("EtcScripts"))
    {
        @RenderSection("EtcScripts")
    }

Кнопка удаления (ссылка):

<a asp-action="Delete" asp-controller="Admin" asp-route-Id="@record.Id" asp-route-Table="@ViewBag.Table"
                   asp-route-Page="@ViewBag.Page" data-ajax="true" data-ajax-method="POST" data-ajax-failure="onFailed" data-ajax-success="AjaxLoad" data-ajax-update="#PartialViewId">
                    @NanoWiki.Resources.Translations.Delete
                </a>

Метод Контроллера:

[HttpPost]
        public ActionResult Delete(string Table, int? Id, int? Page)
        {
            pageIndex = Page.HasValue ? Convert.ToInt32(Page) : 1;

            if (!Id.HasValue)
            {
                obj = new { message = Resources.Translations.UpsErrorMessage, action = "error" };
                return Json(obj);
            }

            var result = Connector.SQLQuery("DELETE FROM " + Table + " WHERE Id = " + Id);

            if (result == false)
            {
                obj = new { message = Resources.Translations.UpsErrorMessage, action = "error" };
                return Json(obj);
            }

            obj = new { table = Table, page = pageIndex, action = "load" };
            return Json(obj);
        }

Как отправить данные из AjaxLoad в макет?

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