ASP.net MVC javascript 在局部视图中不是 运行

ASP.net MVC javascript in partial view is not running

也许有人可以帮助我理解调用具有自己的 javascript 代码的部分视图的问题或错误是什么。

这是主要的 cshtml:

@model  Ads_Negocio.FormTest

@{
    ViewBag.Title = "Reportone";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<div> <p>Parent view</p> </div>
<p>----------Partial view section-----------</p>
<div>
    <p>Partial view</p>
    @Html.Partial("Componente/_aTestView")
</div>

@section scripts{
    <script type="text/javascript">
        $(document).ready(function () {
            alert("parent view renderign")
        });
    </script>
}

局部视图_aTestView.cshtml:

<button type="button" id="btnGraficNew">Run</button>

<script type="text/javascript">
    $(document).ready(function () {
        alert("partial view rendering");
        $("#btnGraficNew").click("click", function () {
            alert("Call from partial view");
        });
    });
</script>

问题:

  1. 在视图渲染后,部分视图内的警报永远不会调用。
  2. 当我按下按钮时,它没有提醒。

局部视图与父视图一起加载。因此,javascript 命令应该位于父视图而不是局部视图本身。

当您 运行 您的代码时,您可以在控制台 window 中看到以下错误。

Uncaught ReferenceError: $ is not defined 

解决方案 - 您应该将 jquery 引用放在 _Layout.cshtml 页面的头部。执行此操作后,您的代码将按预期 运行。 如果您使用的是默认包,那么下面的代码将起作用。

<head>
    ...
    @Scripts.Render("~/bundles/jquery")
</head>

<head>
    ...
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>

window.addEventListener 适用于局部视图。

将您的代码放在 addeventlistener 方法中。

例如,此代码仅适用于我的部分视图和 addEventListener。

<script defer>
 window.addEventListener("load", function () {
    $(document).on("change", "#ddlBirim", function () {
        window.location.href = "/@controller/@action/" + $(this).val();
    });
 });
</script>