我在這裏泡菜....麻煩試圖將自定義Javascript集成到ASP.NET webforms應用程序
我試圖創建一個新的,非常標準的ASP.NET Webforms應用程序面向.NET 4.5.2。我以前做過很多次了 - 但從來沒有遇到過這些問題(並且無法完全弄清楚爲什麼他們現在發生並且從未......)。
我的客戶提供了一組CSS和Javascript作爲項目的基礎,這包括Bootstrap和jQuery等等。
現在,當我試圖讓我的第一個簡單頁面正常工作時,我遇到了嚴重麻煩,在頁面中包含了一些額外的Javascript。
嘗試#1
我想有包括像這樣我的Javascript文件:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Web.MyMaster" %>
<!DOCTYPE html>
<html lang="en" class="no-js no-ie">
<head runat="server">
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=$start">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<webopt:BundleReference runat="server" Path="~/Content/css" />
<!-- Favicons -->
<link rel="shortcut icon" href="~/Images/Icons/favicon.ico" />
<!-- Scripts -->
<script type="text/javascript" src="/Scripts/vendors.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.validate.min.js"></script>
<asp:ContentPlaceHolder ID="HeaderContent" runat="server"></asp:ContentPlaceHolder>
</head>
這似乎工作 - 直到我部署到我們的測試環境的第一次。在那裏,這些應用程序不是「根植」的,例如,他們安裝在IIS設置,其中的路徑,應用程序是http://test.server.com/apps/MyApp
- 現在我對/Scripts/....
各個擊破,並沒有引用發現
嘗試#2
我試圖改變包括腳本使用ResolveUrl()
方法我以前使用的:
<!-- Scripts -->
<script type="text/javascript" src="<%= ResolveUrl("~/Scripts/vendors.min.js") %>"></script>
<script type="text/javascript" src="<%= ResolveUrl("~/Scripts/jquery.validate.min.js") %>"></script>
所以在這種情況下,ASP.NET 應解決基於應用程序的根目錄下(不管是)這些名稱和包括茨艾倫e腳本。
麻煩:現在我得到一個錯誤(在啓動時)說像(德國自由翻譯):
The control collection cannot be modified since the control contains code blocks (e.g. <% ... %>)
不好意思?!?!?!?!?!
嘗試3
所以我最後的手段是使用數據綁定表達式是這樣的:
<!-- Scripts -->
<script type="text/javascript" src="<%# ResolveUrl("~/Scripts/vendors.min.js") %>"></script>
<script type="text/javascript" src="<%# ResolveUrl("~/Scripts/jquery.validate.min.js") %>"></script>
,這需要我在OnInit
做
Page.Header.DataBind();
母版頁的事件處理程序,並且一旦我嘗試使用DevExpress網格時,會出現一個令人討厭的錯誤:
Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.
OK,所以我在我的智慧結束 - 如何在地球上我可以包括一些JavaScript文件到ASP.NET Web表單應用程序今天,在2016年,使一切正常工作 - 沒有討厭的.NET錯誤,沒有找不到Javascript .......你有什麼辦法來解決這個我的困境?
您的頁面是否駐留在應用程序根目錄中?如果是這樣,你可以簡單地使用相對URL,例如''。 –
@FrédéricHamidi:不,我的頁面位於 –