Доступ к обработчикам событий jquery в одном файле из представлений и динамически загружаемых ajax частичных представлений - PullRequest
0 голосов
/ 19 сентября 2019

В моем основном веб-приложении asp.net я хотел бы иметь один файл (site.js) (содержащий функции и обработчики событий), который является скриптом, связанным в файле _Layout.cshtml, который будет доступен во всех представлениях сущностей(например, «Customers» Index.cshtml) и частичные представления, которые динамически загружаются с помощью ajax (например, при нажатии кнопки) внутри представления сущности, [в данном случае] в подробном шаблоне Telerik Kendo Grid, намного позже основного и сущностизагружаются представления.

Проблема : в этом примере обработчик нажатия кнопки редактирования (в частичном представлении Details.cshtml) (в файле site.js) не запускается.Конечно, если я сделаю ссылку на файл site.js в нижней части частичного представления Details.cshtml, это сработает, но, похоже, это противоречит цели и будет проблематичным, я полагаю, хотя я недостаточно хорошо понимаю эти вещиеще не знаю, что лучше.

_Layout.cshtml

    <body>
      ...
      <script src="~/js/site.js" asp-append-version="false"></script>

      @RenderSection("Scripts", required: false)
    </body>

Клиенты |Index.cshtml |подробный шаблон Telerik Kendo Grid

    <script id="customer_detail_template" type="text/x-kendo-template">
      ...
      // this is the container div for the dynamically loaded partial view (e.g. Details.cshtml)
      <div class="entity-rud" data-entity="Customers" data-eid="#=CustomerID#"></div>
      ...
    </script>

Заказчики |Details.cshtml частичное представление

    @model GovISTPS.Models.Customer

    @{
        ViewData["Title"] = "Details";
    }

    <div class="row">
        <div class="col-xs-12 col-sm-12 g-crud-toolbar">
            <a class="btn btn-default btnEdit">Edit</a>
            <a class="btn btn-default btnDelete">Delete</a>
        </div>

      ...
    </div>

site.js

$(document).ready(function () {
    $(".btnEdit").click(function () {
        var erudDiv = $(this).closest(".entity-rud");
        var entity = $(erudDiv).data("entity");
        var eid = $(erudDiv).data("eid");

        $.ajax({
            url: "/" + entity + "/Edit",
            data: { id: eid },
            type: "get",
            cache: false,
            success: function (data) {
                $(erudDiv).html(data);
            }
        });
    });
  ...
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...