在MVC中使用css3pie,应将pie.htc文件放在哪里?

12

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

我按照普通html页面的样例进行操作,它可以完美地运行,但是在我的MVC项目中就不行了。 我认为这与'pie.htc'文件的路径在MVC中存在混淆有关。

我将'pie.htc'文件放在项目文件夹(根目录)中,在我的css文件中,我使用: behavior: url(/PIE.htc);

我认为MVC路由器需要修改以接受htc文件扩展名? 抱歉,我对MVC还很陌生。有没有人在MVC项目中尝试过pie.htc并使其正常工作?请帮忙解答。

谢谢!

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文件。


这对我来说似乎有效,除非我的根URL末尾没有/。例如,“http://SERVER/App/”可以工作,但“http://SERVER/App”会失败。其他页面都没问题,只有根目录是错误的。有什么建议吗? - cw_dev

1
将以下内容添加到Global.asax文件的RegisterRoutes(RouteCollection routes)方法中。
routes.IgnoreRoute("pie.htc");

下次请多给出一些理由,说明为什么这会起作用,以及这到底会做什么,否则这个答案实际上并没有解决任何问题。 - sksallaj

0
在你的样式表中,添加以下“behavior”:
behavior: url("/Content/PIE/PIE.css")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接