代码改变世界

Asp.net MVC Model设置为string类型时报错:Illegal characters in path

2012-03-23 15:23  Fred-Xu  阅读(666)  评论(0编辑  收藏  举报

如果你将一个页面的Model设置为string类型,那么你会碰到这个错误:

Illegal Characters in path

似乎很奇怪,或许你甚至都不知道造成这个错误的原因是因为Model类型为string。实际上,你得到上面的错误原因是在你的Controller中,你通常调用View方法传送这个model作为唯一的参数并且这个model的值是string类型。但是你可能没有注意到View方法同样也有另外一个重载就是接受一个string作为这个View的名字。所以如果你传送这个model如下代码:

return View("myStringModel");

上面的代码中,你特别指向名为"myStringModel"的页面,并且这个页面不存在。

解决方法是:通过指定明确的参数来选择正确的重载,如下代码:

return View(model: "myStringModel");

 

参考:http://samondotnet.blogspot.com/2011/11/aspnet-mvc-setting-model-as-string-and.html

http://stackoverflow.com/questions/2087246/howto-allow-illegal-characters-in-path

http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx