Недопустимые символы в пути при вызове представления индекса из моего контроллера

Я получаю ArgumentException при вызове действия index одного из моих контроллеров, и я не уверен, почему. Сообщение об ошибке следующее:

Ошибка сервера в приложении '/'

Нелегальные персонажи в пути.

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

Я не уверен, почему это происходит. вот код из контроллера:

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

2 ответа

Решение

Неоднозначность возникает из-за того, что вы используете string как тип модели. Эта двусмысленность может быть решена следующим образом:

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

или же:

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

или же:

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

Обратите внимание на приведение к объекту, чтобы выбрать правильную перегрузку метода, так как уже есть View метод, который принимает строковый аргумент, представляющий имя представления, поэтому вы не можете выбросить в него все, что захотите => если это строка, это должно быть имя представления, и это представление должно существовать.

Я наконец нашел это. Это действительно смущающая опечатка мной. Я набрал код неправильно:

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

вместо:

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

Затем фреймворк хотел загрузить файл представления, например так:

"~/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"

Надеюсь, я сохраню пару часов отладки для кого-то еще, разместив это:(

Другие вопросы по тегам