我目前正在学习MVC路由框架,但对RouteCollection.MapRoute方法所接受的参数有些困惑。
如果我以下列请求为例:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
- List item
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
它与以下签名映射
public static Route MapRoute(
this RouteCollection routes,
string name,
string url,
Object defaults
)
我的问题涉及“对象默认值”。
- 为什么我们要使用它作为
new { controller = "Home", action = "Index", id = "" }
? - 这是固定的格式吗?
CLR 如何解释参数序列
?
跟进问题:
a. 为什么我们将控制器、操作或ID放在括号 {} 中装饰?
b. URL 指定和默认值之间是否有匹配?