Pregunta

Estoy desconcertado. Mi sitio aleatoriamente arroja el siguiente error:

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 mayoría de las veces, el sitio funciona bien ... a veces arroja el error anterior, lo que no tiene sentido para mí. Si no se encontró la vista parcial, ¿por qué no podría encontrarla a veces?

La vista parcial se guarda en una carpeta llamada " en " debajo de la carpeta compartida (dentro de la carpeta de vistas). Así es como renderizo la vista:

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

ViewData [" lang "] está configurado en mi controlador base, en la acción OnActionExecuting, así:

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 e IsEnglish son propiedades del controlador base. Todo el sitio los usa para mantener la selección del idioma y para tomar las decisiones apropiadas en función del idioma. Si no se establece el idioma, se establecerá en " en " ;. Entonces ViewData [" lang "] siempre debería estar disponible para mis vistas.

¿Alguna razón por la que no se puede encontrar una vista parcial en ocasiones, mientras que la mayoría de las veces (estoy hablando el 90% del tiempo) funciona bien?

¿Fue útil?

Solución

Como el error apunta a 'No se pudo encontrar' La vista parcial '/ SiteUserMenu'. ' puede ver que no está recogiendo el ' en '. Sugeriría que el mejor lugar para comenzar a depurar es ViewData [" lang "] . Vea si puede producir pasos para replicar el error cada vez, luego depure en su solución para ver si ViewData [" lang "] se ha configurado mientras está en el método de Acción de error de su Controlador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top