出于某种原因,每当我尝试在本地安装的ASP.NET MVC3中使用参数解析URL时,参数基本上最终都是我的控制器处理函数中的null
。
例如,我有
public class HomeController : Controller
{
public ActionResult Foo(string bar)
{
ViewBag.Message = bar;
return View();
}
}
并尝试访问http://localhost/myapp/foo/sometext
或http://localhost/myapp/home/foo/sometext
,bar
基本上评估为null
而不是sometext
。
我非常有信心我的MVC3安装工作正常,因为我已经设法在几天前运行一个带有自定义路由规则的单独应用程序。我有点担心,我可能会在某处或其他任何地方搞砸配置标志。
关于这里可能出现什么问题的任何想法?
答案 0 :(得分:8)
默认路由映射需要在您的操作中使用名为id
的参数。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
如果您将操作更改为:
public ActionResult Foo(string id)
它应该有用。如果无法更改参数名称,您也可以尝试这样的URL:
http://localhost/myapp/home/foo/?bar=sometext