2013-02-06 47 views
2

在定义路由的MVC 4应用程序中,我可以提供默认参数列表。我应该为可选参数提供什么值:UrlParameter.Optional空字符串MVC 4默认参数值

实例:

routes.MapRoute("simple", "{controller}/{action}/{id}", 
    new {controller = "Home", action = "Index", id = UrlParameter.Optional}); 
routes.MapRoute("simple", "{controller}/{action}/{id}", 
    new {controller = "Home", action = "Index", id = ""}); 

是否有在上述实施例和id = ""id = UrlParameter.Optional之间的任何差异?

请注意,一些控制器操作将使用id(类型string),其中一些将是无参数的。

回答

4

的区别是微妙的,但几乎不重要

UrlParameter.Optional表示空将被传递到操作方法代替的价值。

id = ""表示默认值“”(不为空)将传递给操作方法。

在这两种情况下,在路由中不包含id参数都不会阻止MVC框架找到正确的方法。

UrlParameter.Optional的情况下,你应该让所有听上去很像操作方法需要一个可空参数

类型事项

你不应适用于id=""使用整数路线。

+2

同样重要的是只有列表中的最后一个参数可以有一个默认值'UrlParameter.Optional' –

+0

@四十二,好点 –

+1

@DaveA,非常感谢您的澄清! – Alexandar