css3pie в MVC, где разместить файл pie.htc? - PullRequest
12 голосов
/ 02 февраля 2011

Я пытался использовать Css3pie в моем проекте MVC для рендеринга панели с закругленными углами, но пока не получилось.работает отлично, но не в моем проекте MVC.Я думаю, что это как-то связано с путем файла «pie.htc», который путается в MVC

Я помещаю файл «pie.htc» в папку проекта (root) и в мой файл CSS, я использую: поведение: URL (/PIE.htc);

Я думаю, что маршрутизатор MVC необходимо изменить, чтобы принять расширение файла htc?Извините, я новичок в MVC.Кто-нибудь пробовал pie.htc и он работает в проекте MVC, пожалуйста, помогите?

Спасибо!

Ответы [ 3 ]

16 голосов
/ 03 февраля 2011

В качестве дополнительного примечания (и, возможно, это решит вашу проблему в любом случае), если вы не хотите иметь файл .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 из правильного местоположения.

1 голос
/ 02 февраля 2011

Добавьте следующее к RegisterRoutes(RouteCollection routes) методу Global.asax файла

routes.IgnoreRoute("pie.htc");
0 голосов
/ 03 августа 2012

В таблицу стилей добавьте следующее behavior:

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