Bonjour,

Je m'arrache les cheveux avec un problème depuis des heures. J'ai placé une View et une PartialView dans un même répertoire d'une area : Area\Admin\View\Producteurs Depuis l'url du navigateur (http://monsite/Admin/Producteurs/List, je vois bien ma view + ma partialView. Depuis une méthode Ajax jquery, j'appelle une méthode qui doit me renvoyer la PartialView pour mise à jour. Or, là, j'obtiens le message d'erreur :

> > [FormatException: L'index (de base zéro) doit être supérieur ou égal à zéro et inférieur à la taille de la liste des arguments.]   
> System.Text.StringBuilder.AppendFormat(IFormatProvider provider,
> String format, Object[] args) +11118244   
> System.String.Format(IFormatProvider provider, String format, Object[]
> args) +63    System.Web.Mvc.ViewLocation.Format(String viewName,
> String controllerName, String areaName) +88   
> System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext
> controllerContext, List`1 locations, String name, String
> controllerName, String areaName, String cacheKey, String[]&
> searchedLocations) +168   
> System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext
> controllerContext, String[] locations, String[] areaLocations, String
> locationsPropertyName, String name, String controllerName, String
> cacheKeyPrefix, Boolean useCache, String[]& searchedLocations) +633   
> System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView(ControllerContext
> controllerContext, String partialViewName, Boolean useCache) +129

Avant je n'utilisais pas les Area et ça fonctionnait très bien. Depuis non. J'ai aussi modifié l'Engine Razor de cette façon pour qu'il me trouve bien mes view,partialview et layout :

public class CustomViewEngine : RazorViewEngine
    {
        public CustomViewEngine()
        {
            ViewLocationFormats = new string[]
            {
                "~/Areas/{2}/Views/{1}/{0}.cshtml",  
                "~/Areas/{2}/Views/Shared/{0}.cshtml",
            };
            this.PartialViewLocationFormats = ViewLocationFormats;
            this.ViewLocationFormats = ViewLocationFormats;
            this.MasterLocationFormats = ViewLocationFormats;
        }  
    }

Au niveau des mes routes, j'ai ça :

public class AdminAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

Est-ce que quelqu'un à déjà eu ce problème ou pourrait m'aider, je ne sais plus quoi faire !! Merci d'avance !

Related posts

Recent Viewed