考虑使用如此Nov. 2008 Phil Haack blog post中所述的区域约定的ASP.NET MVC 1.0项目。这个解决方案一旦建立就很好用!ASP.NET MVC:一个参数未命名为ID和非整数的操作方法
由于我对ASP.NET MVC的路由规则知之甚少,所以我的麻烦就开始了。
我的目的是创建一个操作方法和URL的结构是这样的:
http://mysite/Animals/Dogs/ViewDog/Buster
DogsController.ViewDog()
看起来是这样的:
public ActionResult ViewDog(string dogName)
{
if (dogName!= null)
{
var someDog = new DogFormViewModel(dogName); //snip a bunch more
return View(someDog);
}
else { return View("DogNotFound"); }
}
眼下的任务是确保RegisterRoutes()
有正确的条目。
UPDATE
这里的新路径映射:
routes.MapRoute("ViewDog", "Animals/{controller}/{action}/{dogName}",
new { controller = "Dogs",
action = "ViewDog", dogName = "" });
创建到URL链接:按预期的方式创建
<%= Html.RouteLink("Brown Buster", "ViewDog", new RouteValueDictionary(new { controller="Dogs", action="ViewDog", dogName="Buster" }))%>
的URL。感谢Craig Stuntz and his blog post on Html.RouteLink
。
http://mySite/Animals/Dogs/ViewDog/Buster
新的问题:帕拉姆dogName
不皮卡从URL字符串值 “克星”。对该方法的调用成功,但参数的计算结果为null。
问题
你怎么能:
- 化妆用细绳这条路线的工作,并删除路由的默认惯例
int id
? 我想从int
改变参数的名称。
默认值是id,而不是int id。路由令牌是无类型的。 – 2009-09-24 00:26:36
你的路线在什么顺序中定义?此路由是否在默认路由中带有'id'? – 2010-02-16 17:28:15