2011-06-13 82 views
1

我有一個使用一些JQuery腳本的站點母版頁面,當我的站點訪問我帳戶文件夾中的任何內容時,頁面加載但不是沒有錯誤消息以及搞砸了母版頁。如果我從Account文件夾中取出頁面,它工作正常。嘗試整天想出來,但無濟於事。感謝任何幫助。謝謝!在主頁面顯示不同文件夾中的aspx頁面的問題

+0

定義「錯誤消息」和「混亂的主頁面」。我們需要有關該問題的實際信息。 – David 2011-06-13 13:04:12

+0

點擊訪問帳戶頁面中的任何頁面時,會彈出一個「網頁錯誤」,並顯示錯誤「您想調試此網頁嗎?此網頁包含可能阻止其顯示或正常工作的錯誤。 : Line:76 Error:'$'is undefined – k80sg 2011-06-13 13:08:51

+0

因爲我們看不到你的代碼(特別是第76行),所以你仍然需要在這裏進行一些基本的調試,這聽起來像是一個JavaScript錯誤。你可以使用像FireBug這樣的調試器來瀏覽JavaScript,看看對象的狀態和拋出錯誤的代碼。**編輯:**根據錯誤信息,聽起來好像代碼試圖使用jQuery庫加載之前的jQuery。 – David 2011-06-13 13:11:26

回答

1

我想有可能是安全問題

首先確保您添加在你的文件的JavaScript文件的正確路徑realtive ...

閱讀:Setting authorization rules for a particular page or folder in web.config

允許匿名用戶訪問Account.aspx頁面。 複製

<configuration> 
    <location path="~/Users> 
     <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
2

這將與您的鏈接到CSS和JavaScript。確保添加「../」以升級文件夾結構。

+4

這將破壞每個使用主頁面的頁面該文件夾 – 2011-06-13 13:08:41

+0

外面的頁面似乎不受影響。 – k80sg 2011-06-13 14:13:16

1

我們真的沒有足夠的信息來提供明確的答案 - 例如,您是指「錯誤消息」是什麼意思?來源是什麼?它是如何顯示的?最重要的是,它說了什麼?如果刪除了jQuery的使用,會發生什麼情況,頁面是否顯示並按預期運行?除此之外,爲了解決「混亂的MasterPage」,我假設你的賬戶文件夾通過web.config的authorization部分限制了訪問。這可以調整以允許訪問某些資源;在authorization部分,你可能有這樣的事情:

<authorization> 
    <deny users="?"/> 
    <allow users="*"/> 
</authorization> 

以上將鎖定進出下降,這是範圍內的路徑中的所有文件。當然你的登錄頁面可以被訪問,但也許不是資源,如CSS文件和圖片 - 讓這些被用戶尚未驗證您可以配置自定義location進行訪問,因此:

<location path="pathToResources"> 
    <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
    </system.web> 
</location> 
1

嗯,ASP.NET解釋來自網頁的「觀點」相對鏈接,所以如果該頁面是在文件夾中,您的主頁面相對鏈接將不再工作。

這裏是我使用,包裝在一個自定義的控制你的頭內容的解決方案,它會做底墊:

<asp_custom:RebasingContainer ID="mainRebase" runat="server"> 
</asp_custom:RebasingContainer> 

並使用RUNAT =服務器,並使用它們像這樣:

<link rel="stylesheet" type="text/css" href="~/css/reset.css"/> 

請注意「〜」,這是ASP.NET「從根」路徑。

對於控件,使用此:

[ControlBuilder(typeof(RebasingContainerBuilder)), 
    Designer("System.Web.UI.Design.ControlDesigner, System.Design, " + 
    "Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"), 
    ConstructorNeedsTag(false)] 
public class RebasingContainer : HtmlGenericControl 
{ 
    public RebasingContainer() 
    { 

    } 

    protected override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer) 
    { /*doesn't render it's own tag*/ } 

    protected override void RenderEndTag(System.Web.UI.HtmlTextWriter writer) 
    {/*doesn't render it's own tag*/} 
} 

控制使用以下控制建設者:

public class RebasingContainerBuilder : ControlBuilder 
{ 
    public override bool AllowWhitespaceLiterals() 
    { 
     return false; 
    } 

    public override Type GetChildControlType(string tagName, System.Collections.IDictionary attribs) 
    { 
     if (string.Equals(tagName, "link", StringComparison.OrdinalIgnoreCase)) 
     { 
      return typeof(HtmlLink); 
     } 

     if (string.Equals(tagName, "script", StringComparison.OrdinalIgnoreCase) 
      && attribs.Contains("src")) 
     { 
      //only rebase script tags that have a src attribute! 
      return typeof(HtmlScript); 
     } 

     return null; 
    } 
} 

當腳本是:

public class HtmlScript : HtmlGenericControl 
{ 
    public HtmlScript() : base("script") { } 

    public HtmlScript(string tag) : base(tag) { } 

    public string Src 
    { 
     get 
     { 
      return this.Attributes["src"]; 
     } 
     set 
     { 
      this.Attributes["src"] = value; 
     } 
    } 

    protected override void RenderAttributes(HtmlTextWriter writer) 
    { 
     Src = ResolveClientUrl(Src); 
     base.RenderAttributes(writer); 
    } 
} 

註冊的Web客戶重訂控制.config,你準備好了。例如:

<add assembly="__code" namespace="CustomControls" tagPrefix="asp_custom" /> 

如果您使用AppCode文件夾。

該解決方案將爲您提供運行時以及分離的主網頁和簡單網頁的設計時支持。

+1

CSS鏈接的一個簡單的'/'前綴總是從根開始,無需調用.NET來擴展路徑。 – 2011-06-13 14:02:03

+0

感謝Mr Disappointment,它是在CSS和JS文件鏈接導致問題之前忽略/前綴! – k80sg 2011-06-13 14:08:54

+0

@Mr失望,只有在資源位於網站根目錄時纔有效,這對於大量網站來說並非如此。如果您有localhost/TestSite/Folder1/default.aspx,其中TestSite是您的網站的名稱,並且以root身份擁有Master,那麼在Folder1中使用該主機的內容將無法工作。 – 2011-06-13 14:38:35

0

當你在一些子文件夾的根文件夾的子文件夾和頁面的JavaScript或jQuery的,這樣做:添加兩個環節爲每個javascript文件在你的母版:

如:

<script src="Scripts/jquery.js" type="text/javascript"></script> 
<script src="../Scripts/jquery.js" type="text/javascript"></script> 

我如何牛逼的工作原理:在子文件夾將頁面引用與../的聯繫,即

在根文件夾的頁面將被引用到的鏈接沒有../,即

提示:如果你能不要讓一個文件夾工作或其他,使用:~//,.././一個會引用它爲你。