简体   繁体   English

如何在嵌套在视图内的部分视图内加载javascript文件? MVC5

[英]How do I load my javascript file inside my partial view that is nested inside a view? MVC5

I have two custom made javascript files (viewJscript.js, and partialJscript.js). 我有两个定制的javascript文件(viewJscript.js和partialJscript.js)。 Inside the view i simply put: 我只是简单地放在视图内部:

<script type="text/javascript" src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/viewJscript.js"></script>

And this works just fine. 这样就可以了。 Now I am trying to do the same in my partial view which is nested inside the view: 现在,我试图在嵌套在视图内的局部视图中执行相同的操作:

    <script type="text/javascript" src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/partialJscript.js"></script>

And it doesnt work. 而且它不起作用。 So what should I do in order to load my partialJscript.js inside my partial view? 那么,为了在我的局部视图中加载我的partialJscript.js,我该怎么办?

I forgot to mention that the partial view is dynamic and is opened upon a button click from the view 我忘了提到局部视图是动态的,并且在从该视图单击按钮后便会打开

EDIT Here is my code inside the partialJscript.js file: 编辑这是我在partialJscript.js文件中的代码:

$(function () {
        var divSensorNames = $("#sensorNames");
        $('.webgrid2-table th:first-child,  .webgrid2-table td:first-child').hide();

        $('.webgrid2-table th:nth-child(2),  .webgrid2-table td:nth-child(2)').hide();

        $('.webgrid2-table th:nth-child(3),  .webgrid2-table td:nth-child(3)').hide();

        $('#AddNewSensor').on('click', function () {
            $('#sensorList').load('@Url.Action("ChooseSensorList", "PredefinedViews")');
        });

        $('.editSensorMode').on("click", function () {
            var tr = $(this).parents('tr:first');
            //var SensorID = tr.find("#SensorID").html();
            var PredefinedViewItemID = tr.find("#PredefineViewsItemID").html();
            var urlEditModes = "@Url.Action("EditSensorMode", "PredefinedViews", new { pviId = "PredefinedViewItemID" })";
            //urlEditModes = urlEditModes.replace("SensorID", SensorID);
            urlEditModes = urlEditModes.replace("PredefinedViewItemID", PredefinedViewItemID);
            $('#sensorList').load(urlEditModes);
        });

        $(".sensor-delete-table").on("click", function () {

            var tr = $(this).parents('tr:first');
            var PredefineViewsItemID = tr.find("#PredefineViewsItemID").html();
            var PredefineViewID = tr.find("#PredefineViewID").html();
            var amount = parseInt($("[data-id='" + PredefineViewID + "']").text());
            //amount = amount + anyNumber; This also works!
            //var rowCountBefore = $('.webgrid2-table tr').length;

            var flag = confirm('@Html.Localize("deleteCheck")');
            var urlShowNewSensors = "@Url.Action("ShowSensorNames", "PredefinedViews", new { predefinedViewID = "PredefineViewID" })";
            urlShowNewSensors = urlShowNewSensors.replace("PredefineViewID", PredefineViewID);
            if (PredefineViewID != "" && flag) {
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: '@Url.Action("DeleteSensor", "PredefinedViews")',
                    data: JSON.stringify({ pviID: PredefineViewsItemID, pID: PredefineViewID }),
                    dataType: "json",
                    complete: function (result) {

                        var urlShowSensors = "@Url.Action("ShowSensorNames", "PredefinedViews", new { predefinedViewID = "PredefID" })";
                        urlShowSensors = urlShowSensors.replace("PredefID", PredefineViewID);
                        $(divSensorNames).load(urlShowSensors);

                        amount--;
                        $("[data-id='" + PredefineViewID + "']").text(amount.toString());
                });
            }
        });
    });

In other words, you're using AJAX to bring in the HTML of the partial view. 换句话说,您正在使用AJAX引入部分视图的HTML。 For security reasons, browsers do not allow scripts tags from dynamically-inserted HTML to be run. 出于安全原因,浏览器不允许运行来自动态插入HTML的脚本标签。 You'll either have to include the script in your main view, or load the script dynamically via JavaScript in your AJAX callback. 您将不得不在主视图中包含脚本,或者通过JavaScript在AJAX回调中动态加载脚本。 You can do this with something like Require.js or Modernizr.load. 您可以使用Require.js或Modernizr.load之类的方法来执行此操作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用javascript在MVC项目中加载视图,然后加载其中的部分视图? - How do I load a view and then a partial view within it in a MVC project using javascript? 如何在MVC5中由ajax调用的Partial View中引用外部javascript? - How to reference outside javascript in a Partial View called by ajax in MVC5? 如何动态加载局部视图内的外部javascript? - how to load external javascript inside partial view dynamically? 我的Javascript代码未在MVC视图中运行 - My Javascript code doesn't run inside my MVC view 如何将JavaScript绑定到在MVC5视图中创建的表内的复选框和datetimepicker - How to bind javascript to checkboxes and datetimepicker inside table created in MVC5 view 如何从 JavaScript 文件中的项目文件夹加载图像? - How do I load an image from my project folder inside a JavaScript file? ASP.NET MVC5:实时加载的部分视图不会加载动态Javascript参考 - ASP.NET MVC5: live loaded partial view doesn't load dynamic Javascript reference MVC:如何确保我的字段在编辑表单的视图内选择了值? - MVC: How can I make sure that my field have the value selected inside my view on the edit form? 如何在MVC5的视图模板中将值传递给javascript? - How do you pass values to javascript in view template in MVC5? 在ASP.NET MVC的部分视图中执行Javascript - Execute Javascript inside a partial view in ASP.NET MVC
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM