public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
// 忽略所有 *.axd 的網址路徑
// 在預設 RegisterRoutes 方法中的 IgnoreRoute 用來定義 不要透過 Routing 處理的網址
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default", // 路由名稱:唯一名稱對應唯一的 Route
url: "{controller}/{action}/{id}", // URL 及參數:通過簡單的模式,將 URL 解析具有意義的字段
defaults: new // 參數預設值
{
controller = "Home", // 默認值:提供與對應字段的默認值
action = "Index",
id = UrlParameter.Optional
// constraints // 約束:一系列的約束應用到 URL 模式上
// 用來嚴格定義 URL 對應 Route
}
);
}
}
- Step 2. 創建 Controller 如下:
- 預設 Routing Engine 只有 id = UrlParameter.Optional ,因此 Parameters 只有 1 個 id
- 如果將 int? id 改為 int? other,Routing Engine 沒有註冊 other 的 Parameters ,因此不會動作
public class UserController : Controller
{
public ActionResult UserName(int? id)
{
ViewBag.myid = id;
return View();
}
}
- Step 3. Routing Engine 中註冊新的 Routing
routes.MapRoute(
name: "MultiParam", // 路由名稱:唯一名稱對應唯一的 Route
url: "{controller}/{action}/{age}/{area}", // URL 及參數:通過簡單的模式,將 URL 解析具有意義的字段
defaults: new // 參數預設值
{
controller = "Home", // 默認值:提供與對應字段的默認值
action = "Index",
age = UrlParameter.Optional,
area = UrlParameter.Optional
// constraints // 約束:一系列的約束應用到 URL 模式上
// 用來嚴格定義 URL 對應 Route
}
);
- Step 4. Controller 加入 UserInfo
public ActionResult UserInfo(int? age, string area)
{
ViewBag.myage = age;
ViewBag.myarea = area;
return View();
}
沒有留言:
張貼留言