2011-02-02 57 views
12

我一直在嘗試在我的MVC項目中使用Css3pie來呈現圓角的面板,但目前爲止沒有運氣。MVC中的css3pie放置pie.htc文件的位置?

我遵循正常的html頁面的示例,它完美的工作,但不是在我的MVC項目。 我認爲這是與'pie.htc'文件在MVC中混淆的路徑

我將'pie.htc'文件放在項目文件夾(root)和我的css文件中,我使用: 行爲:url(/PIE.htc);

我認爲MVC路由器需要修改才能接受htc文件擴展名? 對不起,新的MVC。有沒有人試過pie.htc並讓它在MVC項目中工作,請幫忙?

謝謝!

回答

16

RegisterRoutes(RouteCollection routes)方法作爲一個側面說明(也許它無論如何都會解決您的問題),如果你不希望有宏達文件在您的根,您可以執行以下操作來解決行爲固有的相關路徑問題。這不是最漂亮的解決方案,但它工作得很好 -

在你的CSS,定義行爲:behavior: url(CSS3PIE);

然後在你的Global.asax.cs有以下代碼:

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(); 
} 

它只會查找匹配「CSS3PIE」的任何請求,並從正確的位置返回.htc文件。

1

以下添加到Global.asax文件

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

星爺我已經試過了預期 – BeCool 2011-02-02 06:52:06

+0

下一次請給出爲什麼會工作,以及這究竟會做更多的推理最初,但沒有工作否則這個答案並不能真正解決任何問題。 – sksallaj 2013-12-10 23:20:08

0

在你的樣式表,添加以下behavior

behavior: url("/Content/PIE/PIE.css")