Я новичок в js и ссылках на скрипт. У меня есть определенный код js в моем частичном представлении. Фактический код:
<script>
var bID = @businessIDScript;
var gID = @groupIDScript;
var dID = @departmentIDScript;
var aID = @areaIDScript;
if (!(aID > 0)) {
$("#createIdlerButton").attr("disabled", "disabled");
$("#importIdlerButton").attr("disabled", "disabled");
}
if (@sapEnabled == true) {
$("#sapIdlerReport").show();
$("#sapIdlerReportAnchor").removeAttr('onClick');
$("#sapIdlerReportAnchor").attr('onClick', 'PDS.IdlerManagement.sapIdlerReport(' + bID + ',' + gID + ',' + dID + ',' + aID + ')');
} else {
$("#sapIdlerReport").hide();
}
</script>
полная страница просмотра бритвы:
@using PDS.Domain.EF6.Resources.Web
@using Kendo.Mvc.UI
@using PDS.Web.Areas.PlannedInspections.Models;
@using PDS.Web.Utils;
@{
var sapEnabled = ViewBag.SAPEnabled.ToString().ToLower();
var isLaidOutHide = (string)ViewData["isLaidOutHide"];
var EnforceUserDropDown = (string)ViewData["EnforceUserDropDown"].ToString().ToLower();
var CurrentLevelIsDashboard = false;
bool.TryParse(ViewData["CurrentLevelIsDashboard"].ToString(), out CurrentLevelIsDashboard);
var WorkOrderDashboardParameters = ViewData["WorkOrderDashboardParameters"] != null ?
(WorkOrderDashboardParameters)ViewData["WorkOrderDashboardParameters"] : null;
var importDataName = ViewData["importDataName"]?.ToString() ?? "";
var importTemplateUrl = ViewData["importTemplateUrl"]?.ToString() ?? "";
var importActionUrl = ViewData["importActionUrl"]?.ToString() ?? "";
var areaId = ViewData["areaId"]?.ToString().Trim() ?? "";
var areaIDScript = string.IsNullOrEmpty(areaId) ? "0" : areaId;
var breadcrumbTitle = ViewData["breadcrumbTitle"]?.ToString().Trim() ?? "";
var areaIdStr = ViewData["areaId"]?.ToString().Trim() ?? null;
var departmentIdStr = ViewData["departmentId"]?.ToString().Trim() ?? null;
var groupIdStr = ViewData["groupId"]?.ToString().Trim() ?? null;
var businessIdStr = ViewData["businessId"]?.ToString().Trim() ?? null;
var businessId = "";
if (!string.IsNullOrEmpty(businessIdStr))
{
businessId = businessIdStr;
}
else
{
using (var context = PDS.Domain.EF6.EF.CcMSEntitiesv6.CreateForUser(User))
{
if (!string.IsNullOrEmpty(groupIdStr))
{
var id = int.Parse(groupIdStr);
businessId = context.vwAreas.FirstOrDefault(x => x.GroupID == id)?.BusinessID.ToString() ?? "";
}
else if (!string.IsNullOrEmpty(departmentIdStr))
{
var id = int.Parse(departmentIdStr);
businessId = context.vwAreas.FirstOrDefault(x => x.DepartmentID == id)?.BusinessID.ToString() ?? "";
}
else if (!string.IsNullOrEmpty(areaIdStr))
{
var id = int.Parse(areaIdStr);
businessId = context.vwAreas.FirstOrDefault(x => x.AreaID == id)?.BusinessID.ToString() ?? "";
}
}
}
var businessIDScript = string.IsNullOrEmpty(businessId) ? "0" : businessId;
var groupIDScript = string.IsNullOrEmpty(groupIdStr) ? "0" : groupIdStr;
var departmentIDScript = string.IsNullOrEmpty(departmentIdStr) ? "0" : departmentIdStr;
}
<div id = "idler-grid-toolbar" class = "toolbarGridContainer">
<div class = "pull-left">
@(Html.Kendo().DropDownList()
.Name("GridFilter")
.HtmlAttributes(new { data_column = "IsAtRisk" })
.Items(items =>
{
items.Add().Text(IdlerManagement.IdlerTag_Dropdown_HideReplaced).Value("active");
items.Add().Text(General.All).Value("all");
items.Add().Text(IdlerManagement.IdlerTag_Dropdown_AtRisk).Value("atrisk");
})
.Events(ev => ev.Change("PDS.IdlerManagement.activeIdlerDashboardFilterChanged"))
)
@(Html.Kendo().DropDownList()
.Name("IdlerGridFilter")
.HtmlAttributes(new { data_column = "Idler" })
.Items(items =>
{
items.Add().Text(IdlerManagement.Idlers).Value("true");
items.Add().Text(IdlerManagement.Structures).Value("false");
items.Add().Text(General.All).Value("all");
})
.Events(ev => ev.Change("PDS.IdlerManagement.activeIdlerDashboardFilterChanged2"))
)
@if (!CurrentLevelIsDashboard)
{
<span class = "pull-right">
<button type = "button" id = "schematicsButton" class = "btn btn-default" title='@IdlerManagement.Schematics_Button' onclick = "PDS.IdlerManagement.editSchematic(this, '@areaId')">
@IdlerManagement.Schematics_Button
</button>
</span>
}
@if (User.IsInRole("Power User") || User.IsInRole("Business Administrator") || User.IsInRole("System Administrator"))
{
<div class = "pull-right">
<div class = "dropdown shutdown-planner-dropdown">
<button type = "button" id = "shutdownPlannerTags" class = "btn btn-default dropdown-toggle" title='@IdlerManagement.ShutdownPlanner_Button' data-toggle = "dropdown">
@IdlerManagement.ShutdownPlanner_Button
<span role = "button" unselectable = "on" class = "k-select" aria-label = "select">
<span class = "k-icon k-i-arrow-60-down"></span>
</span>
</button>
<ul class = "dropdown-menu dropdown-menu-right" style = "transform:translate3d(0px, 51px, 0px); overflow-y:auto">
<li>
<a href = "#" class = "addShutdown" onclick = "PDS.IdlerManagement.shutdownPlannerAdd(this, '@businessId', '@breadcrumbTitle', '@User.Identity.Name')" id = "shutdownPlannerTags">@IdlerManagement.ShutdownPlanner_Button_Add</a>
</li>
<li>
<a href = "#" class = "removeShutdown" onclick = "PDS.IdlerManagement.shutdownPlannerRemove(this, '@User.Identity.Name')" id = "shutdownPlannerTags">@IdlerManagement.ShutdownPlanner_Button_Remove</a>
</li>
</ul>
</div>
</div>
@Html.Partial("_IdlerShutdownPlannerTemplate")
}
@if (!User.IsInRole("Read Only User"))
{
<button class = "btn btn-default " onclick = "PDS.IdlerManagement.closeOutIdlerTags(this, @EnforceUserDropDown, '@User.Identity.Name')" disabled = "disabled" id = "closeOutIdlerTags">@IdlerManagement.IdlerTag_Button_CloseOut</button>
<button class = "btn btn-default @isLaidOutHide" onclick = "PDS.IdlerManagement.laidOutIdlerTags(this, @EnforceUserDropDown, '@User.Identity.Name')" disabled = "disabled" id = "laidOutIdlerTags">@IdlerManagement.IdlerTag_Button_LaidOut</button>
}
</div>
@if (WorkOrderDashboardParameters != null)
{
<span class = "pull-right">
<button type = "button" data-role = "close" id = "viewAsset" class = "btn btn-default" title = "@General.Close" onclick = "PDS.Common.UrlHistory.navigateBack()">
<i class = "fa fa-times"></i>
</button>
</span>
}
<span class = "pull-right">
@Html.Partial("_QuickReport", new ViewDataDictionary() { { "groupName", "Idler Management" } })
</span>
@Html.Partial("_ImportExportButtons", new ViewDataDictionary() { { "DownloadTemplateUrl", $"/GlobalImportExport/ImportWizard/DownloadImportTemplateByEntity?entityName=IdlerTag" }, { "EntityName", "IdlerTag" } })
@if (!User.IsInRole("Read Only User"))
{
if (!CurrentLevelIsDashboard)
{
<div class = "pull-right">
<div class = "dropdown create-idlerstructure-button-dropdown">
<button type = "button" id = "createIdlerButton" class = "btn btn-default dropdown-toggle" title = "@IdlerManagement.IdlerTag_Tooltip_CreateRecord" data-toggle = "dropdown"><i class = "fa fa-plus"></i></button>
<ul class = "dropdown-menu dropdown-menu-right">
<li>
<a href = "#" class = "addIdler-Idler" onclick = "PDS.IdlerManagement.createIdlerTag(this, true, '@areaId', @Html.Raw(WorkOrderDashboardParameters != null && WorkOrderDashboardParameters.workOrderTaskId.HasValue ? WorkOrderDashboardParameters.workOrderTaskId.ToString() : "null"))" id = "laidOutIdlerTags">@IdlerManagement.IdlerTag_Button_CreateIdler</a>
</li>
<li>
<a href = "#" class = "addIdler-structure" onclick = "PDS.IdlerManagement.createIdlerTag(this, false, '@areaId', @Html.Raw(WorkOrderDashboardParameters != null && WorkOrderDashboardParameters.workOrderTaskId.HasValue ? WorkOrderDashboardParameters.workOrderTaskId.ToString() : "null"))" id = "laidOutIdlerTags">@IdlerManagement.IdlerTag_Button_CreateStructure</a>
</li>
</ul>
</div>
</div>
}
}
</div>
@Html.Partial("_ImportTemplate", new ViewDataDictionary() { { "importTemplateUrl", importTemplateUrl }, { "importActionUrl", importActionUrl } })
<script>
var bID = @businessIDScript;
var gID = @groupIDScript;
var dID = @departmentIDScript;
var aID = @areaIDScript;
if (!(aID > 0)) {
$("#createIdlerButton").attr("disabled", "disabled");
$("#importIdlerButton").attr("disabled", "disabled");
}
if (@sapEnabled == true) {
$("#sapIdlerReport").show();
$("#sapIdlerReportAnchor").removeAttr('onClick');
$("#sapIdlerReportAnchor").attr('onClick', 'PDS.IdlerManagement.sapIdlerReport(' + bID + ',' + gID + ',' + dID + ',' + aID + ')');
} else {
$("#sapIdlerReport").hide();
}
</script>
Отображение выглядит следующим образом: Как вы можете видеть на изображении ниже, часть кода js отображается на главной странице. Мне трудно решить эту проблему.
Примечание. С функциональностью кода проблем нет, он отлично работает. Даже пробовал делать console.info("Hello World"). Выбрасывает на страницу тот же темный наполовину испеченный js. Будем признательны за любую помощь.
Заранее спасибо.
Что я пробовал:
Первоначально я думал, что эта проблема связана с некоторыми отсутствующими тегами и замыканием в тегах html, но я исправил эти проблемы и устранил ошибки консоли и предупреждения, которые я получал для этих тегов. Кроме того, я обнаружил, что «не отображать ничего» в теге скрипта решило эту проблему, но мой старший не разрешит, говоря, что это не решение, а просто хак. Я понятия не имею, что вызывает эту проблему, потому что в VS нет ни предупреждений, ни ошибок. также я попытался выполнить функцию document.Ready для этого скрипта, но это также с треском провалилось. Теперь я не в курсе и понятия не имею, что вызывает эту ошибку. Другое решение, которое я обнаружил, заключалось в том, что если я переместил весь этот скрипт в новый тег <div>, это решило проблему.
Ожидание:
--> JS не должен отображаться на странице.
Похоже, что страница отображает тег скрипта как html.
Быстрое и простое решение — скрыть тег script следующим образом:
<script style = "display:none;">
Если бы вы могли переместить эту функциональность за пределы страницы бритвы и на специальную страницу javascript/typescript, это, вероятно, также решило бы проблему рендеринга.
Ниже поможет
не могли бы вы попробовать это с разделом рендеринга скрипта на странице макета, а затем визуализировать свой скрипт в этой области.
// используйте это на странице вашего макета -- внизу страницы после того, как все скрипты плагина будут отображены
@RenderSection("scripts", required: false)
// используйте ниже на вашем частичном
@section scripts{
<script type = "text/javascript">
var bID = @businessIDScript;
var gID = @groupIDScript;
var dID = @departmentIDScript;
var aID = @areaIDScript;
if (!(aID > 0)) {
$("#createIdlerButton").attr("disabled", "disabled");
$("#importIdlerButton").attr("disabled", "disabled");
}
if (@sapEnabled == true) {
$("#sapIdlerReport").show();
$("#sapIdlerReportAnchor").removeAttr('onClick');
$("#sapIdlerReportAnchor").attr('onClick', 'PDS.IdlerManagement.sapIdlerReport(' + bID + ',' + gID + ',' + dID + ',' + aID + ')');
} else {
$("#sapIdlerReport").hide();
}
}
Спасибо большое. это сработало для меня. ты легенда
Пробовали ли вы переместить скрипт в другое место и посмотреть, что произойдет? Шаблон кендо может отображать этот фрагмент JavaScript в столбцах/заголовке сетки данных в виде текста. Я думаю, что вы можете сделать, это сначала сделать методом проб и ошибок определить, где код будет работать и в то же время не будет отображаться как текст. Может быть, что-то общее, например, страница макета или что-то в этом роде? После этого вы можете сделать правильное исправление, например, где лучше всего разместить код.
да, может быть, я попробую, но мне пришлось отказаться от отображения из-за выпуска. Был поставлен хак. хахаха
рассматривать как комментарий вместо ответа
да, я сделал это в конце, потому что это был простой способ избежать неприятностей