В моем основном веб-приложении 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);
}
});
});
...
});