[英]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.