MVC中的css3pie,pie.htc文件放在哪里?

Posted

技术标签:

【中文标题】MVC中的css3pie,pie.htc文件放在哪里?【英文标题】:css3pie in MVC, where to place the pie.htc file? 【发布时间】:2011-06-19 17:50:45 【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

【参考方案1】:

附带说明(也许它会解决您的问题)如果您不想将 .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 文件。

【讨论】:

这似乎对我有用,除非我的根 URL 末尾没有 / 。例如。 “SERVER/App”有效,但“SERVER/App”失败。其他页面都很好,只是root错了。有什么建议吗?【参考方案2】:

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

routes.IgnoreRoute("pie.htc");

【讨论】:

下次请给出更多理由说明为什么这会起作用,以及这究竟会做什么,否则这个答案并不能真正解决任何问题。【参考方案3】:

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

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

【讨论】:

以上是关于MVC中的css3pie,pie.htc文件放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

在 IE8 中使用 CSS3Pie htc 作为边框半径

CSS3 Pie 根本不工作,尝试了一切

设置 PIE.htc 的文件位置

是否可以在全局范围内将 CSS3Pie 边框半径应用于 jQuery UI?

如何解决IE8浏览器不兼容CSS3圆角边框问题?(实用篇)

当我使用 cakephp 时,我在哪里放置 PIE.htc 文件(用于使 IE 与 CSS3 一起工作)