css3pie в MVC, где разместить файл pie.htc?

Я пытался использовать Css3pie в своем проекте MVC для рендеринга закругленной угловой панели, но пока что мне не повезло.

Я следую примеру с обычной HTML-страницей, и она отлично работает, но не в моем проекте MVC. Я думаю, что это как-то связано с путем файла 'pie.htc', который путают в MVC

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

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

Спасибо!

3 ответа

Решение

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

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

routes.IgnoreRoute("pie.htc");

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

behavior: url("/Content/PIE/PIE.css")
Другие вопросы по тегам