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")