2010-12-16 13 views
0

Das Standardverhalten von MVC, wenn eine unvollständige Vorlage nicht gefunden werden kann, ist einen Fehler zu werfen. Ich schreibe eine benutzerdefinierte Ansichts-Engine, die Teiltage von anderen Speicherorten als dem Standard abruft. Ich möchte auch das Verhalten so ändern, dass, wenn eine unvollständige Vorlage nicht gefunden werden kann, ein Fehler nicht ausgelöst wird, sondern ein "leeres" eingegeben wird, wo die Vorlage ausgegeben werden sollte, und dann meinen Logger loggen lassen Tatsache, dass die Vorlage nicht gefunden wurde. Der Grund dafür ist, dass wir mehrere Personen benötigen, um "Hilfe" -Templates zu senden, die zusätzlichen Text liefern, aber wenn sie nicht gefunden werden, werfen sie keinen Fehler auf, weil sie für das Funktionieren des Bildschirms nicht wichtig sind.Asp.mvc - Override nicht gefunden Verhalten für Partialtemplates

+0

Was fragen Sie? –

+0

Hoppla. Tut mir leid, ich glaube, ich habe vergessen, den zweiten Para hinzuzufügen, der erklärt, was ich wollte. Im Grunde genommen wurde gefragt, wo in der Aufrufliste ich den Abruf der partiellen Ansichtsvorlage abfangen konnte, da ich nirgendwo in einer benutzerdefinierten Ansichtsmaschinenimplementierung einen Override finden konnte. Allerdings habe ich zu viel darüber nachgedacht. Ich habe gerade einen benutzerdefinierten htmlHelper erstellt, für den ich Code unten eingefügt habe. – AlexGad

Antwort

0

Es macht nichts, ich habe gerade eine andere Teilvorlage erstellt, die in den Bereichen aufgerufen wird, die leeren Platz zurückgeben sollen, wenn die Vorlage nicht gefunden wird.

public static class PartialExtensions 
    { 
     // Methods 
     public static MvcHtmlString PartialWithErrorRedirection(this HtmlHelper htmlHelper, string partialViewName, string redirectViewName) 
     { 
      try 
      { 
       return htmlHelper.Partial(partialViewName, null, htmlHelper.ViewData); 
      } 
      catch (InvalidOperationException ex) 
      { 
       if (redirectViewName != null && redirectViewName.Trim().Length > 0) 
        return (htmlHelper.Partial(redirectViewName)); 
       else 
        return (htmlHelper.Partial("NotFound")); 
      } 
     } 





    }