【问题标题】:css3pie in MVC, where to place the pie.htc file?MVC中的css3pie,pie.htc文件放在哪里?
【发布时间】: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 项目中工作,请帮忙?

谢谢!

【问题讨论】:

    标签: css asp.net-mvc asp.net-mvc-2 css3pie


    【解决方案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")
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2011-07-03
      • 2012-08-20
      • 2016-06-18
      • 2011-06-21
      • 2012-12-19
      • 2010-11-28
      • 2018-06-05
      • 2011-01-07
      相关资源
      最近更新 更多