zoukankan      html  css  js  c++  java
  • 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")

     综上所看:

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

  • 相关阅读:
    leetcode Super Ugly Number
    leetcode Find Median from Data Stream
    leetcode Remove Invalid Parentheses
    leetcode Range Sum Query
    leetcode Range Sum Query
    leetcode Minimum Height Trees
    hdu 3836 Equivalent Sets
    hdu 1269 迷宫城堡
    hud 2586 How far away ?
    poj 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/qk2014/p/4050158.html
Copyright © 2011-2022 走看看