12

我一直在尝试在我的 MVC 项目中使用Css3pie来渲染圆角面板,但到目前为止还没有运气。

我使用普通的 html 页面按照示例进行操作,它可以完美运行,但不适用于我的 MVC 项目。我认为这与在 MVC 中混淆的“pie.htc”文件的路径有关

我将“pie.htc”文件放在项目文件夹(根目录)和我的css文件中,我使用:行为:url(/PIE.htc);

我认为需要修改 MVC 路由器以接受 htc 文件扩展名?对不起,我是 MVC 的新手。有没有人尝试过 pie.htc 并让它在 MVC 项目中工作,请帮忙?

谢谢!

4

3 回答 3

16

作为旁注(也许它会解决您的问题),如果您不想将 .htc 文件放在您的根目录下,您可以执行以下操作来解决行为固有的相对路径问题。这不是最漂亮的解决方案,但效果很好 -

在您的 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 文件。

于 2011-02-02T22:47:34.950 回答
1

将以下内容添加到文件的RegisterRoutes(RouteCollection routes)方法中Global.asax

routes.IgnoreRoute("pie.htc");
于 2011-02-02T06:43:30.780 回答
0

在您的样式表中,添加以下内容behavior

behavior: url("/Content/PIE/PIE.css")
于 2012-08-03T09:20:20.097 回答