MVC中的HtmlHelper详解
熟悉MVC开发的朋友都应该知道在MVC中,每一个Controller都对应一个View,并且CS文件和对应的ASPX文件也被分离了,更重要的是不再有服务器端控件在工具箱中,不再是代码后至了。MVC中的ASPX页面和以前我们使用Winform中的页面还是有很大的区别的。
MVC将web开发还原到最原始的”请求-->处理-->相应“的模型上来。而又有加快开发速度,提高代码可重用性,微软为开发者提供了HtmlHelper类,该类可以让开发者快速开发前台页面,同时也支持可扩展的接口,并且前台页面中的标签也可以实现重用。同时,该类还提供了强类型标签更是在开发阶段就实现编译检测,提高了编码的效率;以及还提供了模板编辑功能页面嵌套等功能。
在MVC中所有的请求都归结到控制器下面的Action。所有所有的请求都是到指定一个具体的Action,Url的格式是根据路由规则来确定的。比如,默认的路由规则中定义的请求地址格式是:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
则请求的Url地址是
http://localhost/Home/Index
我们可以看到请求的地址不再跟WebForm中的请求地址就是页面的相对路径,而在MVC中请求的地址是一个逻辑地址,而不是物理地址的路径。
在页面中添加超链接<a/>标签的时候,其href属性就有了变化性,如果想保证href属性可以正常跳转,其格式必须与路由规则的格式保持一致。也就是当路由规则发生变化的时候,href属性也必须跟着变化。
以前我们使用href是使用下面的格式来进行页面跳转:
<a href="/Index/Index">代码改变世界</a>
这种方法存在严重的弊端,当路由规则发生改变,这种方法就不再适用;
我们可以使用Url.Action()方法来解决上述出现的问题:
<a href ="<%:Url.Action("Index","Index") %>">代码改变世界</a>
这样就可以保证当路由规则发生改变,<a/>标签依然可以进行正确的跳转,使href中的链接地址具有自适应能力;
此外,我们还可以和使用HtmlHelper.Action()方法解决(推荐使用):
<%:Html.ActionLink("代码改变世界","Index","Index") %> 页面之间不传递参数
<%:Html.ActionLink("代码改变世界", "Index", "Index", new { Name = "code1" },null)%> 页面之间传递参数
此外,HtmlHelper还为我们提供了很多可以创建html标签的方法,具体就可以"Html."的方法来查看更多的方法。
MVC中的HtmlHelper详解的更多相关文章
- Attribute自定义特性+Asp.net MVC中的filter详解
转载自:http://blog.csdn.net/wangyy130/article/details/44241957 一.filter简介 在了解自定义特性前,先引入一个概念filter,它是MVC ...
- MVC图片上传详解 IIS (安装SSL证书后) 实现 HTTP 自动跳转到 HTTPS C#中Enum用法小结 表达式目录树 “村长”教你测试用例 引用provinces.js的三级联动
MVC图片上传详解 MVC图片上传--控制器方法 新建一个控制器命名为File,定义一个Img方法 [HttpPost]public ActionResult Img(HttpPostedFile ...
- Expression Tree 扩展MVC中的 HtmlHelper 和 UrlHelper
表达式树是LINQ To everything 的基础,同时各种类库的Fluent API也 大量使用了Expression Tree.还记得我在不懂expression tree时,各种眼花缭乱的A ...
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- Spring学习 6- Spring MVC (Spring MVC原理及配置详解)
百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...
- php中关于引用(&)详解
php中关于引用(&)详解 php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的变量名访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- 【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
随机推荐
- 【转】UniGUI Session管理說明
[转]UniGUI Session管理說明 (2015-12-29 15:41:15) 转载▼ 分类: uniGUI 台中cmj朋友在uniGUI中文社区QQ群里发布的,转贴至此. UniGUI ...
- ASP.NET Core 注入和获取 AppSettings 配置
ASP.NET Core 项目中有个appsettings.json配置文件,用于存放一些配置信息,比如数据库连接字符串等,但访问的话,只能在 ASP.NET Core 项目中获取,如果我们在其他项目 ...
- Android开发 - 掌握ConstraintLayout(四)创建基本约束
上一篇我们介绍了编辑器的基本使用,本文我们介绍创建基本的约束. "约束"表示View之间的位置关系.当我们在ConstraintLayout布局中创建View时,如果我们没有添加任 ...
- 大数据搜索引擎之elasticsearch使用篇(一)
作者:yanzm 原文来自:https://bbs.ichunqiu.com/thread-42421-1-1.html 1.基础介绍 本期,我们将着重介绍elasticsearch的基本使用方法. ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 6.在计算节点上安装并配置计算服务Nova
安装和配置计算节点这个章节描述如何在计算节点上安装和配置计算服务. 计算服务支持几种不同的 hypervisors.为了简单起见,这个配置在计算节点上使用 :KVM <kernel-based ...
- zuul熔断代码
package com.sun.fallback; import java.io.ByteArrayInputStream; import java.io.IOException; import ja ...
- ubuntu 16.04下源码安装opencv3.4
源码安装opencv,遇到了一些小波折,这里做个备忘吧. 首先要下载源码,路径: https://github.com/opencv/opencv 下载成功后,在opencv的根目录下执行下面操作: ...
- iOS开发笔记(Swift)-通用App安装引导页的实现
之前一直做的项目都是基于OC开发的,最近开始尝试使用Swift语言来重写整个项目. 本篇文章主要是讲述如何使用Swift来实现常见的通用App安装引导界面. 效果预览: 实现思路: 主要是采用了UIS ...
- win10 + cuda8.0 + caffe SSD + vs2015 + python3
一.下载 git clone https://github.com/runhang/caffe-ssd.git cd caffe-ssd 1. 修改 build_win.cmd if !PYTHON_ ...
- python tricks
1. cities = ['Marseille', 'Amsterdam', 'New York', 'Londom'] # the good way for i, city in enumerate ...