2010-09-15 19 views
1

J'ai un contrôleur dans lequel je fais des vérifications.MVC RedirectToAction d'un contrôleur à l'autre - La vue n'est pas affichée issue

Si, pour une raison ou une autre, une exception se produit, je souhaite afficher les messages d'erreur dans une autre vue d'un autre automate.

Voici comment mon gestionnaire d'exceptions semble

catch (Exception ex) 
     { 
      string infoMsg = "Delete the user and recreate is with an appropriate username of both a first and last name which is required for a doctor"; 

      string errorMsg = ex.Message; 

      // ErrorController ec = new ErrorController(); 

      return this.RedirectToAction("Index", "Error", new { errorMessage = errorMsg, infoMessage = infoMsg }); 

     } 

C'est ActionResult le reçoit l'appel.

public ActionResult Index(string errorMessage, string infoMessage) 
    { 
     var db = new DB(); 

     OccuredError occuredError = new OccuredError(); 

     occuredError.ErrorMsg = errorMessage; 
     occuredError.InfoMsg = infoMessage; 

     DateTime dateTime = DateTime.Now; 

     occuredError.TimeOfError = dateTime; 

     db.OccuredErrors.InsertOnSubmit(occuredError); 
     db.SubmitChanges(); 


     return View(occuredError); 
    } 

C'est l'erreur Vue d'index qui est fortement typée

<h2>Index</h2> 

<table> 
    <tr> 
     <th></th> 
     <th> 
      Error Message 
     </th> 
     <th> 
      Info Message 
     </th> 
     <th> 
      Time Of Error 
     </th> 
    </tr> 

<% foreach (var item in Model) { %> 

    <tr> 
     <td> 
      <%= Html.ActionLink("Details", "Details", new { id=item.ErrorId })%> | 
     </td> 
     <td> 
      <%= Html.Encode(item.ErrorId) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.ErrorMsg) %> 
     </td> 
     <td> 
      <%= Html.Encode(item.InfoMsg) %> 
     </td> 
     <td> 
      <%= Html.Encode(String.Format("{0:g}", item.TimeOfError)) %> 
     </td> 
    </tr> 

<% } %> 

</table> 

Mon problème est que l'utilisateur ne redirigée de la vue initiale (celle qui avait l'exception) à la vue d'index d'erreur. Lors du débogage, je peux voir qu'il exécute l'erreur Error Index ActionResult et que les données sont placées dans la base de données. Il y a juste quelque chose avec l'affichage de la vue Index qui cause le problème je pense.

Toutes les suggestions à ce que je fais mal ici.

Répondre

1

En tant que test rapide, le changement: return View(occuredError); à: return View("Error", occuredError);

où "erreur" est le nom de la vue.

Matt

+0

n'a pas réalisé la date à ce sujet, désolé! –