2011-02-02 13 views
12

Ho cercato di utilizzare lo Css3pie nel mio progetto MVC per rendere il pannello degli angoli arrotondato, ma finora non ho avuto fortuna.css3pie in MVC, dove posizionare il file pie.htc?

Seguo l'esempio con la normale pagina html e funziona perfettamente ma non nel mio progetto MVC. Penso che sia qualcosa a che fare con il percorso del file "pie.htc" che viene confuso in MVC

Posiziono il file "pie.htc" nella cartella del progetto (root) e nel mio file css, io uso: comportamento : url (/PIE.htc);

Penso che il router MVC debba essere modificato per accettare l'estensione del file htc? Scusate im nuovo con MVC. Qualcuno ha provato pie.htc e ha funzionato nel progetto MVC, per favore aiutatemi?

Grazie!

risposta

16

Come nota a margine (e magari Si risolverà il problema in ogni caso) se non si desidera avere il file .htc a vostra root, puoi fare quanto segue per aggirare i problemi relativi al path inerenti ai comportamenti. Non è la soluzione più bella, ma funziona bene -

nel CSS, definiscono il comportamento come: behavior: url(CSS3PIE);

Poi, nel tuo Global.asax.cs avere il seguente codice:

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

E ' cercherà semplicemente qualsiasi richiesta corrispondente a "CSS3PIE" e restituirà il file .htc dalla posizione corretta.

+0

Questo sembra funzionare per me tranne quando non ho/alla fine del mio URL di root. Per esempio. "http: // SERVER/App /" funziona ma "http: // SERVER/App" non riesce. Altre pagine vanno bene, solo la radice è sbagliata. Eventuali suggerimenti? –

1

Aggiungere il seguente al metodo RegisterRoutes(RouteCollection routes) del Global.asax file di

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

Yeh ho provato che il lavoro inizialmente sbagliando di poco come previsto – BeCool

+0

La prossima volta si prega di dare più ragionare sul perché questo avrebbe funzionato, e che cosa questo avrebbe esattamente fare altrimenti questa risposta non risolve nulla. – sksallaj

0

Nel foglio di stile, aggiungere il seguente behavior:

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