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

二、指定控制器

复制代码
//路由配置
      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);

上一篇:[JSOI2004]平衡点


下一篇:随笔 planetest