Frage

Ich bin verwirrt. Meine Seite zufällig führt den folgenden Fehler:

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidOperationException: The partial view '/SiteUserMenu' could not be found. The following locations were searched:
/SiteUserMenu
   at System.Web.Mvc.HtmlHelper.FindPartialView(ViewContext viewContext, String partialViewName, ViewEngineCollection viewEngineCollection)
   at System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, ViewEngineCollection viewEngineCollection)
   at System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper htmlHelper, String partialViewName)
   at ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer)

Die meiste Zeit läuft die Website gut ... manchmal wirft es die obigen Fehler, die keinen Sinn für mich macht. Wenn die Teilansicht nicht gefunden wurde, warum sollte es nicht möglich sein, es manchmal zu finden?

Die Teilansicht in einem Ordner mit dem Namen „de“ unter dem gemeinsamen Ordner (innerhalb der Ansichten Ordner) gespeichert. Hier ist, wie ich die Ansicht machen:

<% Html.RenderPartial(ViewData["lang"] + "/SiteUserMenu"); %>

Viewdata [ "lang"] in meinen Basis-Controller festgelegt wird, in der OnActionExecuting Aktion, etwa so:

var l = (RouteData.Values["language"] != null) ? RouteData.Values["language"].ToString() : string.Empty;

if (string.IsNullOrEmpty(l))
    l = "en";

if (l.Contains("en"))
{
    IsEnglish = true;
    l = "en";
}
else
    l = "ja";

ViewData["lang"] = l.ToLower();
Language = l.ToLower();

Sprache und IsEnglish sind Eigenschaften der Basis-Controller. Die ganze Seite nutzt sie die Sprachauswahl zu erhalten und angemessene Entscheidungen auf Sprache basieren. Wenn die Sprache nicht gesetzt ist, wird es auf „en“. So Viewdata [ "lang"] sollte immer auf meine Ansichten zur Verfügung.

Gibt es Gründe, warum eine Teilansicht nicht somtimes gefunden werden konnte, während die meiste Zeit (ich bin 90% der Zeit im Gespräch), es funktioniert?

War es hilfreich?

Lösung

Wie die Fehlerpunkte auf 'Die Teilansicht '/ SiteUserMenu' konnte nicht gefunden werden.' können Sie sehen, dass es nicht die Aufnehmen 'en' . Ich würde vorschlagen, dass der beste Platz Debuggen zu beginnen, ist das Viewdata [ „lang“] . Sehen Sie, wenn Sie die Schritte erzeugen kann den Fehler jedes Mal zu replizieren, dann debuggen in Ihre Lösung zu sehen, ob Viewdata [ „lang“] gesetzt wurde, während Sie in der erroring Aktion Methode Ihres Controllers sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top