我有这个简单的问题。以前,当我想用一个参数调用一个控制器方法时,我可以简单地调用/ControllerName/Method/Parameter
,无论这个参数是什么类型。现在,我使用整数值做同样的事情没有问题,但是使用字符串它不起作用。我疯了还是微软真的改变了这个?
答案 0 :(得分:0)
您在Global.aspx.cs中找到的默认路由仍然如下:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
所以你的“参数”是上面例子中的{id}
,可能是ID往往是一个数字。了解你的路线,他们很有趣!链接:http://www.asp.net/mvc/tutorials/asp-net-mvc-routing-overview-cs
答案 1 :(得分:0)
我想象你的行为对int
看起来像这样:
public ActionResult Index(int id)
如果你想接受一个字符串参数而不是一个整数并让它成为(默认)路由的一部分,那么它也需要在方法签名中命名为id
,如下所示:
public ActionResult Index(string id)
如果你的行为有这样的签名:
public ActionResult Post(string slug)
然后使用默认路由slug只有一个值,如果你有一个使用键get
的查询字符串(post
)或表单(slug
)值。一个匹配上述操作并且填充slug
参数的路由(假设它是BlogController
控制器的方法)将是:
routes.MapRoute(
"BlogPost",
"post/{slug}",
new { controller = "Blog", action = "Post", slug = "" }
);