Asp.net MVC 中超链接的三个方法及比较

在Asp.net WebForm开发中,我们通过a标签进行跳转时,通常的写法是:<a href="index.aspx">首页</a>,

在Asp.net MVC中我们也可以这样写:<a href="/Home/Index">首页</a>,这就是我要讲的MVC中超链接的第一种方法。

Asp.net MVC的请求是通过路由的规则来控制的:系统默认规则如下代码

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

规则是可以变的,当路由规则变化后,比如如下:

routes.MapRoute(
                name: "Default",
                url: "{controller}-{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

{controller}/{action}中的斜线变成{controller}-{action}横杠,你也要修改<a href="/Home/Index">首页</a>的地址为<a href="/Home/Index">首页</a>,否则会报错,一个可以修改,如果你的项目中有1000个跳转,那是不可能手动修改的。

这个时候你可以用第二种方法就是Url.Action生成url地址,即:

<a href="<%: Url.Action("Index","Home") %>">UrlHelper生成的url地址</a>

这样不论你的路由规则如何变化,它是不会受影响的,它会自适应路由规则,还有第三种中也可以自适应规则,

就是用UrlHelper生成url地址,即:

@Html.ActionLink("首页","Index","Home")

 综上所看:

第二,第三种方法可以屏蔽路由变化带来的影响!

posted @ 2014-10-25 15:16  一夜秋2014  Views(1244)  Comments(0Edit  收藏  举报