一、根据路由系统生成友好的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")
复制代码
会对应生成:测试
上面的例子还说明了一个问题就是如果是使用写死的测试当路由被重新设置了,就会失效了,所以还是不建议使用“写死”的方法,最好使用生成的方法。

二、指定控制器

复制代码
//路由配置
      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:当路由如下时:

routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}", // 带有参数的 URL
new { controller = "Home", action = "Index"} // 参数默认值
);
对应的html:
两种生成的html不同,但是都可以使用模型绑定,得到id的值。

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

四、指定html属性

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

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

生成的html:测试

除了上述的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", www.cnblogs.com, " myFragmentName",
new { id = "RoutePara"},
new { id = "myAnchorID", @class = "myCSSClass"})
生成html代码:测试

以上都是生成的标签,下面来看一下真正的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);

mvc之URL篇的更多相关文章

  1. mvc中Url.RouteUrl或者Html.RouteLink实现灵活超链接,使href的值随路由名称或配置的改变而改变[bubuko.com]

    mvc,超链接除了直接写在a标签的href内还可以使用路由规则来生成,这样在改变了路由规则或者路由名称时不用再去代码中更改href的值,而且还容易遗漏.借助Url.RouteUrl或者Html.Rou ...

  2. MVC的URL路由规则

    MVC的URL路由规则 Routing的作用:它首先是获取到View传过来的请求,并解析Url请求中Controller和Action以及数据,其次他将识别出来的数据传递给Controller的Act ...

  3. 在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数

    目前项目中有个需求,需要在WebForm中去构造MVC的URL信息,这里写了一个帮助类可以在ASP.NET非MVC环境中(WebForm中)构造MVC的URL信息,主要就是借助当前Http上下文去构造 ...

  4. JS分页 + 获取MVC地址栏URL路径的最后参数

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  5. 【转载】ASP.NET MVC重写URL制作伪静态网页,URL地址以.html结尾

    在搜索引擎优化领域,静态网页对于SEO的优化有着很大的好处,因此很多人就想把自己的网站的一些网页做成伪静态.我们现在在网络上发现很多博客网站.论坛网站.CMS内容管理系统等都有使用伪静态这一种情况,伪 ...

  6. 在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数,以及如何根据URL解析出匹配到MVC路由的Controller和Action

    目前项目中有个需求,需要在WebForm中去构造MVC的URL信息,这里写了一个帮助类可以在ASP.NET非MVC环境中(WebForm中)构造MVC的URL信息,主要就是借助当前Http上下文去构造 ...

  7. MVC中URL传多个参数

    1.mvc中url传递多个参数不能直接使用&,会报错(从客户端(&)中检测到有潜在危险的 Request.Path 值) 方法①:使用?---/Home/Index/?id=xxx&a ...

  8. Spring MVC 基于URL的映射规则(注解版)

    好几天没有跟进Spring MVC的学习了,之前看了点源码都忘的差不多了.这次就跟着之前的问题,继续总结下Spring MVC中的小知识. 关于SpringMVC的小demo可以参考这里! url-p ...

  9. MVC 路由URL重写

    在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. URL重写与优化就是搜索引擎优化的手段之一. 假如某手机网站(基于ASP.NET MVC)分 ...

随机推荐

  1. Intellij IDEA 搭建Spring Boot项目(一)

    原文出处 第一步选择File –> New –> Project –>Spring Initialer –> 点击Next 第二步自己修改 Group 和 Artifact 字 ...

  2. How to implement connection pool in spark streaming

    在spark streaming的文档里,有这么一段: def sendPartition(iter): # ConnectionPool is a static, lazily initialize ...

  3. LeetCode--035--搜索插入位置

    问题描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 方法1:for 循环 class S ...

  4. Black Widow CodeForces - 704C (dp)

    大意: 给定一个m个bool变量的方程, 求方程解的个数 给定方程的形式类似于这样 每个括号是一个子式, 每个子式里变量数不超过2, 每个变量出现次数不超过2, 方程右侧一直是1 对每个变量出现的式子 ...

  5. hdu3374 kmp+最小表示法

    Give you a string with length N, you can generate N strings by left shifts. For example let consider ...

  6. 使用与不使用@RequestBody注解的区别

    1. 如果使用@RequestBody接受页面参数: public Map<String,Object> insertBudget(@ApiParam(required = true,na ...

  7. vijos1746 floyd

    小D的旅行 旅行是一件颇有趣的事情,但是在旅行前规划好路线也很重要. 现在小D计划要去U国旅行. U国有N个城市,M条道路,每条道路都连接着两个城市,并且经过这条道路需要一定的费用wi. 现在小D想要 ...

  8. HDU-3480 Division (四边形不等式优化DP)

    题目大意:将n个数分成m组,将每组的最大值与最小值的平方差加起来,求最小和. 题目分析:先对数排序.定义状态dp(i,j)表示前 j 个数分成 i 组得到的最小和,则状态转移方程为dp(i,j)=mi ...

  9. mysql判断表记录是否存在,不存在则插入新纪录

    开始以为和SQL Server一样,使用not exists进行判断,结果不行: ) INSERT INTO vrv_paw_template(templateName,templateFileNam ...

  10. oracle 产生一个任意大小的随机数

    SELECT DBMS_RANDOM.RANDOM FROM DUAL;          产生一个任意大小的随机数 SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) F ...