2011-08-30 13 views
7

ho istituito pagine di errore personalizzate sul mio sito utilizzandopagine di errore personalizzate in diverse aree in ASP.NET MVC3

<customErrors mode="RemoteOnly" defaultRedirect="~/Error"> 
    <error statusCode="500" redirect="~/Error/InternalError"/> 
    <error statusCode="404" redirect="~/Error/FileNotFound"/> 
    <error statusCode="403" redirect="~/Error/AccessDenied"/> 
</customErrors> 

tuttavia v'è un'altra area del sito, fornitori, e quando si verifica un errore nel area fornitore il reindirizzamento va a Fornitori/Errore/_. Dal momento che non ho nessuna pagina di errore qui, il sito sembra appendere non mostra mai le pagine di errore. Come posso risolvere questo problema senza dover copiare le pagine di errore nell'area del fornitore?

+0

Nella cartella Visualizzazioni nell'area Fornitori, aggiungere customErrors al web.config – Martin

+0

Vedere se questo aiuta http: // StackOverflow .com/domande/5226791/personalizzati-error-pagine-on-asp-net-MVC3 –

risposta

-1

Suppongo che rimuovendo il "~" prima che la pagina di errore faccia il trucco, avrete comunque bisogno della "\".

Un altro modo sarebbe scrivere l'URL FULL nell'attributo redirect/defaultRedirect.

1

Per quanto ho capito con MVC tuo URL make up, per impostazione predefinita è:

Dominio/Controller/Azione/id

Se si dispone di un "errore" Controller. Nella tua logica, si prova a vedere se la richiesta ha avuto origine da un utente del sito che avrebbe bisogno di reindirizzare i "Fornitori" pagina Errore

[HandleError] 
    public ActionResult Index() 
    { 
     // Test to see if you need to go to the SuppliersController 
     if (this.User.IsInRole("supplier")) 
     { 
      return Redirect("/Suppliers/Error"); 
     } 
     else 
     { 
      return View(); // This returns the "Error" View from the shared folder 
     } 
    } 

reindirizzare ad una gestione un'azione sul Controller Fornitori che restituirà l'errore la vista giusta

public class SuppliersController : Controller 
{ 
    // 
    // GET: /Suppliers/ 

    public ActionResult Error() 
    { 
     return View("Error","SomeMasterPage"); // No "Error" view in Suppliers View folder, so it uses the one in shared folder 
    } 

} 

È inoltre possibile utilizzare l'attributo [Authorize] sulla vostra azione Fornitori errore per assicurarsi che l'utente è connesso.

In questo modo, otterrete l'URL desiderato /Fornitori/Errore e potete utilizzare l'azione SuppliersController per specificare la vista desiderata, il modello e la pagina principale/Layout.

guardare anche questa risposta molto esauriente a una domanda simile:

Best 404 example I can find for mvc

Problemi correlati