2011-02-02 13 views
12

Próbowałem użyć Css3pie w moim projekcie MVC, aby renderować zaokrąglony panel narożny, ale do tej pory nie miałem szczęścia.css3pie w MVC, gdzie umieścić plik pie.htc?

Podążam za próbką z normalną stroną HTML i działa idealnie, ale nie w moim projekcie MVC. Myślę, że jest to coś wspólnego ze ścieżką pliku "pie.htc", który jest zagmatwany w MVC

Umieszczam plik "pie.htc" w folderze projektu (root) oraz w moim pliku css, Używam: Zachowanie: url (/PIE.htc);

Myślę, że router MVC musi zostać zmodyfikowany, aby zaakceptować rozszerzenie pliku htc? Niestety, jestem nowy z MVC. Czy ktoś próbował pie.htc i działa w projekcie MVC, proszę o pomoc?

Dzięki!

Odpowiedz

16

Global.asax marginesie (a może to rozwiązać problem tak), jeśli nie chcesz mieć plik .htc na swoje root, możesz wykonać następujące czynności, aby ominąć względne problemy związane z ścieżkami, związane z zachowaniami. To nie jest najładniejszy rozwiązanie, ale działa dobrze -

W swojej CSS zdefiniować zachowanie jak: behavior: url(CSS3PIE);

Następnie w Global.asax.cs mieć następujący kod:

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(); 
} 

It po prostu wyszuka dowolne żądanie pasujące do "CSS3PIE" i zwróci plik .htc z poprawnej lokalizacji.

+0

To wydaje się działać dla mnie, chyba że nie mam/na końcu mojego głównego adresu URL. Na przykład. "http: // SERVER/App /" działa, ale "http: // SERVER/App" nie działa. Inne strony są w porządku, tylko root jest niewłaściwy. Jakieś sugestie? –

1

Dodaj następujące metody RegisterRoutes(RouteCollection routes) pliku

routes.IgnoreRoute("pie.htc"); 
+0

Yeh Próbowałem że początkowo ale nie działał zgodnie z oczekiwaniami – BeCool

+0

Następnym razem proszę podać więcej uzasadnienie, dlaczego to będzie działać, i co to dokładnie zrobić w przeciwnym razie ta odpowiedź tak naprawdę niczego nie rozwiąże. – sksallaj

0

W arkuszu stylów, należy dodać następujące behavior:

behavior: url("/Content/PIE/PIE.css") 
Powiązane problemy