I am receiving an ArgumentException when invoking the index action of one of my controllers and I am not sure why. The error message is the following:
Server Error in '/' Application.
Illegal characters in path.
[ArgumentException: Illegal characters in path.]
System.IO.Path.CheckInvalidPathChars(String path) +126
System.IO.Path.Combine(String path1, String path2) +38
I am not sure why this is happening. here is the code from the controller:
public ActionResult Index()
{
var glaccounts = db.GLAccounts.ToString();
return View(glaccounts);
}
The ambiguity comes from the fact that you are using string
as model type. This ambiguity could be resolved like this:
public ActionResult Index()
{
var glaccounts = db.GLAccounts.ToString();
return View((object)glaccounts);
}
or:
public ActionResult Index()
{
object glaccounts = db.GLAccounts.ToString();
return View(glaccounts);
}
or:
public ActionResult Index()
{
var glaccounts = db.GLAccounts.ToString();
return View("Index", glaccounts);
}
Notice the cast to object to pick the proper method overload as there is already a View
method which takes a string argument which represents the view name so you cannot throw whatever you want to it => if it's a string it must be the name of the view and this view must exist.
I found it finally. It is a really embarassing typo by me. I mistyped the code:
public ActionResult Index()
{
var glaccounts = db.GLAccounts.ToString();
return View(glaccounts);
}
instead of:
public ActionResult Index()
{
var glaccounts = db.GLAccounts.ToList();
return View(glaccounts);
}
Then the framework wanted to load a view file, like this:
"~/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"
Hopefully, I will save couple of hours of debugging for someone else by posting this :(