【发布时间】:2014-11-10 02:38:48
【问题描述】:
我想要一个带有可选字符串参数的索引操作。我无法让它工作。
我需要以下路线:
http://mysite/download
http://mysite/download/4.1.54.28
第一个路由会发送一个空模型到索引视图,第二个路由会发送一个带有版本号的字符串。
如何定义路由和控制器?
这是我的路线定义:
routes.MapRoute(
name: "Download",
url: "Download/{version}",
defaults: new { controller = "Download", action = "Index", version = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是控制器:
public ActionResult Index(string version)
{
return View(version);
}
为什么这不起作用?我不是 ASP MVC 方面的专家,但这似乎是一个非常简单的问题。
错误
- 当我转到
http://mysite/downloads时,它工作正常 - 当我去
http://mysite/downloads/4.5.6时,正确调用了控制器,并且正确传递了参数。但后来似乎没有找到该视图。这是我发现的错误:
【问题讨论】:
-
public ActionResult Index(string version="") { return View(version); }
-
您是否定义了其他路线?这是在默认路由之前定义的吗?
-
你的路线有
action="Version",但你的方法是Index(string version) -
问题出在
version参数中的dots。试试http://mysite/download/4-1-54-28,应该会点击action方法 -
然后是别的东西。我刚刚将你的代码复制到我的项目中,它工作正常。
标签: c# .net asp.net-mvc asp.net-mvc-4 routes