博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mvc3之URL篇
阅读量:5760 次
发布时间:2019-06-18

本文共 3225 字,大约阅读时间需要 10 分钟。

一、根据路由系统生成友好的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:     

三、传入额外的值

路由同二,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
htmlAttributes);

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

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

生成html代码:<a class="myCSSClass" id="myAnchorID" href="# 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);

转载地址:http://qplkx.baihongyu.com/

你可能感兴趣的文章
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
linux 死机分析
查看>>
BOM
查看>>
iOS: Block的循环引用
查看>>
mysql实战02 | 日志系统:一条SQL更新语句是如何执行的?
查看>>
ECC椭圆曲线详解(有具体实例)
查看>>
Linux常见命令(二)
查看>>
PyCharm切换解释器
查看>>
jmp far ptr s所对应的机器码
查看>>
css详解1
查看>>
MySQL类型转换
查看>>
HashSet HashMap 源码阅读笔记
查看>>
变量声明提升1
查看>>
轻量级的Java 开发框架 Spring
查看>>
JS之路——浏览器window对象
查看>>
Chrome教程(二)使用ChromeDevTools命令菜单运行命令
查看>>
数据结构及算法基础--快速排序(Quick Sort)(二)优化问题
查看>>