zoukankan      html  css  js  c++  java
  • mvc3之URL篇

    一、根据路由系统生成友好的URL

    ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName);

    会根据当前的路由指定的Controller来为自己的URL指定controller值。特殊的如下:

    //路由设置
    routes.MapRoute("NewRoute", "App/Do{action}",
    new { controller = "Home" });
    
    //ActionLink的代码如下:
    @Html.ActionLink("测试","Test")

    会对应生成:<a href="/App/DoTest">测试</a>
    上面的例子还说明了一个问题就是如果是使用写死的<a href="/Home">测试</a>当路由被重新设置了,就会失效了,所以还是不建议使用“写死”的方法,最好使用生成的方法。

    二、指定控制器

              //路由配置  
          routes.MapRoute(
    "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值 );
         //View代码:
        @Html.ActionLink("测试", "Test", "Home")
        //对应的html:
        <a href="/Home/Test">

    三、传入额外的值

    路由同二,View代码 :@Html.ActionLink("测试", "Test", new { id = "MyID" }) 对应的html:<a href="/Home/Test/MyID">

    当路由如下时:

                routes.MapRoute(
                    "Default", // 路由名称
                    "{controller}/{action}", // 带有参数的 URL
                    new { controller = "Home", action = "Index"} // 参数默认值
                );

    对应的html:<a href="/Home/Test?id=MyID">两种生成的html不同,但是都可以使用模型绑定,得到id的值。

    当view代码和默认路由系统相匹配时,生成的url会省去controller和action。路由如上面的所示,View代码:@Html.ActionLink("主页", "Index", "Home"),生成的url为:<a href="/">主页</a>

    四、指定html属性

    除了指定连接之外,还可以指定<a>标签的属性,如id,class等。

    view代码:@Html.ActionLink("测试", "Test", "Home", new { id="testID",@class="nav"})(为避免和c#中的class关键字混淆,使用@class表示html标签中的class)

    生成的html:<a class="nav" id="testID" href="/Home/Test”>测试</a>

    除了上述的Html.ActionLink方法以外,我们来看一下重载中参数最多的一个:

     //
            // 摘要:
            //     返回包含指定操作的虚拟路径的定位点元素(a 元素)。
            //
            // 参数:
            //   htmlHelper:
            //     此方法扩展的 HTML 帮助器实例。
            //
            //   linkText:
            //     定位点元素的内部文本。
            //
            //   actionName:
            //     操作的名称。
            //
            //   controllerName:
            //     控制器的名称。
            //
            //   protocol:
            //     URL 协议,如“http”或“https”。
            //
            //   hostName:
            //     URL 的主机名。
            //
            //   fragment:
            //     URL 片段名称(定位点名称)。
            //
            //   routeValues:
            //     一个包含路由参数的对象。
            //
            //   htmlAttributes:
            //     一个对象,其中包含要为该元素设置的 HTML 特性。
            //
            // 返回结果:
            //     一个定位点元素(a 元素)。
            //
            // 异常:
            //   System.ArgumentException:
            //     linkText 参数为 null 或为空。
            public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, 
    string protocol, string hostName, string fragment, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes);

    不解释那么多,因为注释写的很清楚,在此只举个例子,路由同上,view代码如下:

    @Html.ActionLink("测试", "Test", "Home","https", www.cnblogs.com, " myFragmentName",
                                                new { id = "RoutePara"},
                                                new { id = "myAnchorID", @class = "myCSSClass"})

    生成html代码:<a class="myCSSClass" id="myAnchorID" href="https://www.cnblogs.com/Home/Test/RoutePara# myFragmentName">测试</a>

    以上都是生成的<a>标签,下面来看一下真正的url

    如下面的view代码:”生成的url为: @Url.Action("Index", "Home", new { id=1})“生成的html是:”生成的url为: /Home/Index/1“主要用来表示某个连接的href的值。
     五、指定路由

    我们经常会设置路由的名字,不仅仅是为了好记,在对指定路由 也是有好处的。目的是让自己知道可以指定路由,具体用的时间在去查看其它的方法,下面只给一个方法的形式。

    public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, string routeName);

  • 相关阅读:
    微信小程序Tab选项卡切换大集合
    微信小程序基于swiper组件的tab切换
    微信小程序基于scroll-view实现锚点定位
    商家 APP 如何接入新版支付宝支付,老版本商家如何升级
    JSON 接口如何实现 RSA 非对称加密与签名
    基于微信小程序的用户列表点赞功能
    tensorflow中常用学习率更新策略
    交叉熵损失函数和均方误差损失函数
    python中几个实用的文件操作
    特征选择
  • 原文地址:https://www.cnblogs.com/lzhp/p/3009131.html
Copyright © 2011-2022 走看看