Question

Je suis dérouté. Mon site au hasard renvoie l'erreur suivante:

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)

La plupart du temps, le site web fonctionne bien ... parfois, l'erreur ci-dessus est renvoyée, ce qui n'a aucun sens pour moi. Si la vue partielle n’était pas trouvée, pourquoi ne pourrait-elle pas la retrouver parfois?

La vue partielle est enregistrée dans un dossier nommé " en " sous le dossier partagé (à l'intérieur du dossier des vues). Voici comment rendre la vue:

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

ViewData [" lang "] est défini dans mon contrôleur de base, dans l'action OnActionExecuting, comme suit:

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

Language et IsEnglish sont les propriétés du contrôleur de base. L'ensemble du site les utilise pour maintenir la sélection de la langue et pour effectuer les choix appropriés en fonction de la langue. Si la langue n'est pas définie, elle sera définie sur "en". Donc ViewData [" lang "] devrait toujours être disponible pour mes vues.

N'importe quelle raison pour laquelle une vue partielle ne peut pas être trouvée parfois, alors que la plupart du temps (je parle 90% du temps), cela fonctionne bien?

Était-ce utile?

La solution

L'erreur pointant vers "La vue partielle" / SiteUserMenu "est introuvable." , vous pouvez constater qu'il ne détecte pas le "en" . Je suggérerais que le ViewData [" lang "]] constitue le meilleur endroit pour commencer le débogage. Voyez si vous pouvez générer des étapes pour reproduire l'erreur à chaque fois, puis procédez au débogage dans votre solution pour voir si ViewData [" lang "]] a été défini alors que vous êtes dans la méthode Action en erreur de votre contrôleur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top