Asp.net mvc 3 Microsoft是否更改了在ASP.NET MVC 3中将字符串作为参数传递的方式?

Asp.net mvc 3 Microsoft是否更改了在ASP.NET MVC 3中将字符串作为参数传递的方式?,asp.net-mvc-3,Asp.net Mvc 3,我有一个简单的问题。以前,当我只想用一个参数调用控制器方法时,我可以简单地调用/ControllerName/method/parameter,不管这个参数是什么类型。现在,我对一个整数值做了同样的事情,没有任何问题,但是对一个字符串它不起作用。是我疯了还是微软真的改变了这一点?您在Global.aspx.cs中找到的默认路径仍然是: routes.MapRoute( "Default", // R

我有一个简单的问题。以前,当我只想用一个参数调用控制器方法时,我可以简单地调用
/ControllerName/method/parameter
,不管这个参数是什么类型。现在,我对一个整数值做了同样的事情,没有任何问题,但是对一个字符串它不起作用。是我疯了还是微软真的改变了这一点?

您在Global.aspx.cs中找到的默认路径仍然是:

routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

因此,您的“参数”是上面示例中的
{id}
,可能是一个id通常是的数字。了解你的路线,它们很有趣!链接:

我在想象你对
int
s起作用的动作如下:

公共行动结果索引(int-id)

如果希望接受字符串参数而不是整数,并将其作为(默认)路由的一部分,则还需要在方法签名中将其命名为
id
,如下所示:

公共操作结果索引(字符串id)

如果您有一个签名如下的操作:

public ActionResult Post(字符串slug)

然后,使用默认路由slug,只有当您使用键
slug
具有querystring(
get
)或form(
post
)值时,slug才会有一个值。与上述操作匹配并填充
slug
参数的路由(假设它是
BlogController
控制器的方法)将是:

routes.MapRoute(
    "BlogPost",                                             
    "post/{slug}",                           
    new { controller = "Blog", action = "Post", slug = "" }  
);

你能提供一些代码吗?主要是路线设置和控制器操作。