一、根据路由系统生成友好的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. 音视频学习系列第(三)篇---wav文件的存储和解析

    音视频系列 什么是wav wav是一种无损的音频文件格式,wav文件有两部分,第一部分是文件头,记录一些重要的参数信息,如音频的采样率,通道数,数据位宽,第二部分是数据部分,数据部分可以是PCM,也可 ...

  2. win10激活工具---KMSAutoNet

    win10激活工具---KMSAutoNet 1> 2> 3> 4> 5> 6> 8>

  3. IOS-底层数据结构

      Objective-C底层数据结构 类的数据结构 Class(指针) typedef struct objc_class *Class; /* 这是由编译器为每个类产生的数据结构,这个结构定义了一 ...

  4. OC 点语法和变量作用域

    一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObje ...

  5. javascript--- hasOwnProperty、instanceof 、typeof的区别

    typeof 作用:用来判断变量的类型 返回值: string  只有以下几种:number.boolean.string.object.undefined.function[很容易漏掉这个] 形式: ...

  6. 管道pipe与dup结合使用

    前面的例子中,子进程可以直接共享父进程的文件描述符.但是如果子进程调用exec函数执行另一个应用程序时,就不能再共享了. 这种情况下可以将子进程中的文件描述符重定向到标准输入,当新执行的程序从标准输入 ...

  7. JavaScript学习总结(三)——逻辑And运算符详解

    在JavaScript中,逻辑 AND 运算符用双和号(&&)表示 1 var bTrue = true; 2 var bFalse = false; 3 var bResult = ...

  8. Spring Boot的SpringApplication类详解

    相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生.SpringApplication类的run()方法往往在Sprin ...

  9. 7dynamic_cast用法

    已知下面的class层次,其中每一个class都定义有一个default constructor和一个virtual destructor: class X{……}; class A{……}; cla ...

  10. 快速切题 sgu116. Index of super-prime bfs+树思想

    116. Index of super-prime time limit per test: 0.25 sec. memory limit per test: 4096 KB Let P1, P2, ...