Ost*_*tap 2 asp.net-mvc routing asp.net-mvc-routing
我在 MCTS 考试中遇到了以下问题。书上说答案是C,但我认为B这是正确的答案。为什么C?
您创建了一个新的 ASP.NET MVC 2 Web 应用程序。在Global.asax.cs文件中创建了以下默认路由。(行号仅供参考。)
01 public static void RegisterRoutes(RouteCollection routes)
02 {
03 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
04
05 routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } );
06 }
Run Code Online (Sandbox Code Playgroud)
您实现了一个名为 HomeController 的控制器,其中包含具有以下签名的方法。
public ActionResult Index()
public ActionResult Details(int id)
public ActionResult DetailsByUsername(string username)
Run Code Online (Sandbox Code Playgroud)
您需要添加一个路由以满足以下要求:
当通过调用 DetailsByUsername 操作输入用户名作为路径时,必须显示用户的详细信息。
用户名可以包含字母数字字符和下划线,长度可以在 3 到 20 个字符之间。你该怎么办?
A. 用以下代码段替换第 05 行。
routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "DetailsByUsername", id = "" } );
Run Code Online (Sandbox Code Playgroud)
B. 用以下代码段替换第 05 行。
routes.MapRoute( "Default", "{controller}/{action}/{username}", new { controller = "Home", action = "DetailsByUsername", username = "" }, new { username = @"\w{3,20}" } );
Run Code Online (Sandbox Code Playgroud)
C. 在第 04 行,添加以下代码段。
routes.MapRoute( "Details by Username", "{username}", new { controller = "Home", action = "DetailsByUsername" }, new { username = @"\w{3,20}" } );
Run Code Online (Sandbox Code Playgroud)
D. 在第 04 行,添加以下代码段。
routes.MapRoute( "Details by Username", "{id}", new { controller = "Home", action = "DetailsByUsername" }, new { id = @"\w{3,20}" } );
Run Code Online (Sandbox Code Playgroud)
当 ASP.NET MVC 路由查找要映射到的操作时,它会考虑以下几点:
因此,如果您想要一条符合您列出的条件的路线,这条路线将是正确的答案:
routes.MapRoute(
"Details by Username",
"{username}",
new { controller = "Home", action = "DetailsByUsername" },
new { username = @"\w{3,20}" }
);
Run Code Online (Sandbox Code Playgroud)
由于以下原因,具有此结构的 URL 将匹配该路由:
http://example.com/my_user_name
Run Code Online (Sandbox Code Playgroud)
C 是正确答案,因为它添加到当前路由中。
答案 B 替换现有的路由定义,从而阻止默认路由到Home控制器Index操作。
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |