27 votes

Caractères illégaux dans le chemin lors de l'appel de la vue d'index depuis mon contrôleur

Je reçois une ArgumentException lorsque j'appelle l'action d'indexation d'un de mes contrôleurs et je ne sais pas pourquoi. Le message d'erreur est le suivant:

Erreur serveur dans l'application '/'

Caractères illégaux dans le chemin.

 [ArgumentException: Illegal characters in path.]
 System.IO.Path.CheckInvalidPathChars(String path) +126
 System.IO.Path.Combine(String path1, String path2) +38
 

Je ne sais pas pourquoi cela se produit. voici le code du contrôleur:

     public ActionResult Index()
    {
        var glaccounts = db.GLAccounts.ToString();
        return View(glaccounts);
    }
 

57voto

Darin Dimitrov Points 528142

L'ambiguïté vient du fait que vous utilisez string comme type de modèle. Cette ambiguïté pourrait être résolu comme ceci:

public ActionResult Index()
{
    var glaccounts = db.GLAccounts.ToString();
    return View((object)glaccounts);
}

ou:

public ActionResult Index()
{
    object glaccounts = db.GLAccounts.ToString();
    return View(glaccounts);
}

ou:

public ActionResult Index()
{
    var glaccounts = db.GLAccounts.ToString();
    return View("Index", glaccounts);
}

Avis de la fonte pour objet de choisir le bon surcharge de la méthode qu'il existe déjà un View méthode qui prend un argument de type chaîne qui représente le nom de la vue, de sorte que vous ne peut pas jeter tout ce que vous voulez à elle => si c'est une chaîne, il doit être le nom de la vue et de ce point de vue doit exister.

1voto

gyurisc Points 4250

Je l'ai finalement trouvé. C'est une faute de frappe vraiment gênante pour moi. J'ai mal saisi le code:

     public ActionResult Index()
    {
        var glaccounts = db.GLAccounts.ToString();
        return View(glaccounts);
    }
 

au lieu de:

     public ActionResult Index()
    {
        var glaccounts = db.GLAccounts.ToList();
        return View(glaccounts);
    }
 

Ensuite, le framework a voulu charger un fichier de vue, comme ceci:

 "~/Views/GLAccount/SELECT \r\n[Extent1].[Id] AS [Id], \r\n[Extent1].[OrgDefinitionId] AS [OrgDefinitionId], \r\n[Extent1].[GLAccountId] AS 
[GLAccountId], \r\n[Extent1].[Name] AS [Name], \r\n[Extent1].[StartDate] AS [StartDate], 
\r\n[Extent1].[EndDate] AS [EndDate]\r\nFROM [GLAccounts] AS [Extent1].aspx"
 

J'espère que j'économiserai quelques heures de débogage pour quelqu'un d'autre en publiant ceci :(

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X