2011-02-02 7 views
12

私はMVCプロジェクトでCss3pieを使用して、丸みを帯びたコーナーパネルをレンダリングしようとしていますが、これまでのところ運がありません。MVCのcss3pieでは、pie.htcファイルはどこに置かれますか?

私はサンプルを通常のHTMLページで追跡していますが、MVCプロジェクトでは完璧に動作しますが、動作しません。 MVCで混乱している 'pie.htc'ファイルのパスと関係していると思います。

プロジェクトファイル(root)と私のcssファイルに 'pie.htc'私は使用します: ビヘイビア:url(/PIE.htc);

私は、MVCルータは、htcファイルの拡張子を受け入れるように変更する必要があると思いますか? MVCですみません。誰もpie.htcを試して、MVCプロジェクトで作業していますか?

ありがとうございます!

答えて

16

RegisterRoutes(RouteCollection routes)方法に以下を追加します(そして多分それはとにかくあなたの問題を解決します)あなたがで.HTCファイルを持ってしたくない場合根本的に、行動に内在する相対的な経路の問題を回避するには、次のことができます。それはきれいな解決策ではないのですが、それはうまく動作します - あなたのCSSで

、動作を定義など:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    CheckForCSSPIE(); 
} 

private void CheckForCSSPIE() 
{ 
    if (!Regex.IsMatch(Request.Url.ToString(), "CSS3PIE")) 
    { 
     return; 
    } 

    const string appRelativePath = "~/Content/css/PIE.htc"; 
    var path = VirtualPathUtility.ToAbsolute(appRelativePath); 
    Response.Clear(); 
    Response.StatusCode = (int)HttpStatusCode.MovedPermanently; 
    Response.RedirectLocation = path; 
    Response.End(); 
} 

それを:あなたのGlobal.asax.csで次にbehavior: url(CSS3PIE);

次のコードを持っています"CSS3PIE"と一致するリクエストを探し、正しい場所から.htcファイルを返します。あなたのスタイルシートで

+0

これは私のルートURLの最後に/がない場合を除いて私にとってはうまくいくようです。例えば。 「http:// SERVER/App /」は動作しますが、「http:// SERVER/App」は失敗します。他のページは問題ありません。ルートは間違っています。助言がありますか? –

1

注意点としてGlobal.asaxファイル

routes.IgnoreRoute("pie.htc"); 
+0

私は当初、しかしdidntの仕事期待 – BeCool

+0

次の時間としてこれが機能する理由により推論を与えてください、これは正確に何をするだろうと試みた葉そうでなければ、この答えは本当に何も解決しません。 – sksallaj

0

、次behaviorを追加します。

behavior: url("/Content/PIE/PIE.css") 
関連する問題