一、根据路由系统生成友好的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. bcompare Linux版 无限试用

    需要root权限.   # mv /usr/bin/bcompare /usr/bin/bcompare.real # cat /usr/bin/bcompare #!/bin/sh rm " ...

  2. Oracle数据库system用户忘记了密码怎么办

    1.在运行里面输入cmd调出dos窗口,然后在dos窗口中输入sqlplus /nolog 如:D:\oracle\ora92\bin>sqlplus /nolog 2.输入连接命令 如:SQL ...

  3. 流氓 2345.com的新动态及解决方法

    安装了[电脑公司]的Win7_SP1之后, IE的主页被绑架. 症状是先转到 IE959.com,然后自动跳转到 www.2345.com 网上当然有很多例子了,可是都没有效果. 1. 更改IE设置没 ...

  4. illumina phix

    PhiX Control v3 is a reliable, adapter-ligated library used as a control for Illumina sequencing run ...

  5. 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(五)

    2.Find示例代码 (1)xaml文件: //添加Symbol命名空间 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbol ...

  6. 记一次无法正常本地登陆Linux服务器(确定密码正确)

    首先,ssh可以正常登陆使用.但是,本地可以确定密码是正确的情况还是不能登陆. 然后查看/var/log/secure文件如下提示: 然后,尝试去看了下/etc/pam.d/login 下面(有问题的 ...

  7. 『cs231n』计算机视觉基础

    线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.随机搜索 bestloss = float('inf') # 无穷大 for num in range ...

  8. hdu1358 kmp的next数组

    For each prefix of a given string S with N characters (each character has an ASCII code between 97 a ...

  9. Eclipse 汉化方法

    1 打开 http://www.eclipse.org/babel/downloads.php 2  复制 http://download.eclipse.org/technology/babel/u ...

  10. 72. Edit Distance *HARD*

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...