asp.net
  • css
  • url
  • pathinfo
  • 2011-02-02 4 views 2 likes 
    2

    私はasp.net 3.5アプリを持っています。 Request.PathInfoで取得するURLに値を追加しようとすると、場所が相対パスとして解決されるため、headにリンクされているものはすべて失われます。PathInfo値を追加するときにCSSリンクを正しく解決するにはどうすればよいですか?

    マスターページには、次のようになります。

    <head id="Head1" runat="server"> 
        <link rel="stylesheet" href='~/App_Themes/main/style.css' type="text/css" /> 
    </head> 
    

    この

    <head id="ctl00_ctl00_Head1"> 
        <link rel="stylesheet" href="../App_Themes/main/style.css" type="text/css" /> 
    </head> 
    

    ので、私はブラウザが

    でスタイルシートを探している

    http://localhost:5000/project/folder/edit.aspx/555 
    

    に行くようにレンダリングします

    http://localhost:5000/project/folder/App_Themes/main/style.css 
    

    代わりの

    http://localhost:5000/project/App_Themes/main/style.css 
    

    相対パスで解決するための自動動作ですか?私はそれを変更することはできますか?これは以前の開発者が私が見つけていないことをしているものですか?

    ---編集---

    私は以下の提案をしたので、

    <base id="ctl00_ctl00_baseElement" href="http://localhost:5000/project/"></base> 
    

    ようbase要素を追加したが、asp.netは、レンダリングにしつこいですので、私のリンクはまだ動作しません。 href/で始まっていない限り、URLは相対パスですが、どちらの場合も、現在は1つ上のレベルが高すぎます。

    http://localhost:5000/App_Themes/main/style.css 
    
    +0

    "プロジェクト"はプロジェクトによって異なりますか? –

    +0

    @lukeええ、それはasp.net devサーバの仕組みです。 'localhost:port/project name/stuff'です。 – lincolnk

    答えて

    0
    head

    要素がサーバーコントロールとして定義されている場合明らかに、以内link要素は自動的にサーバによって解析され、解決されます。したがって、解決策は、head要素を標準のhtmlコントロールのみにするか、おそらく手動でlink要素を追加することです。私はPathInfoのアイデアを頼りにして追求しました。

    0

    使用:

    <base href="http://yourdomain.com"> 
    <link rel="stylesheet" href="/App_Themes/main/style.css" type="text/css" /> 
    
    0

    私はこの問題を解決するには、HTMLの「ベース」のタグを追加する、 使用方法:Page.ResolveUrl(「〜」)は、サイトのベースURLを解決します。 ローカルホストとサーバーの両方でうまく動作します。

    <base href="<%=ResolveUrl("~")%>" /> 
    
    関連する問題