使用链接时,如果传统的跳转方式如:

<a href="Home/Index>返回</a>

如果将路由的默认配置

   routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults);

修改为:

   routes.MapRoute("Default", // Route name"{controller}-{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults);

则原始的跳转就会失效。所以在跳转时,要使用

@Html.ActionLink("返回","Index","Home")

这样,不管以后的路由规则如何变化,链接照样还可以使用。

显示数据的细节:

MVC中,控件的数据绑定都是先根据name到viewdata中去寻找key值,如果存在,则绑定数据,所以在controller中,直接将数据绑定到viewdata中,key设置为控件的name名,就可以直接显示了,如:

controller中:ViewData["id"]="1";

view中:@Html.TextBox("id"),这样,在页面加载时,会直接将这个“1”绑定到TextBox中,同样绑定Dropdownlist时,也可以同样用这种方式。

<% : %>与<% = %>的区别

<% : %>会将代码以安全的方式显示在view中,比如在controller中,Viewdata["message"]="<script>alert("您好")</script>",

<% : Viewdata["message"]%>显示时,会将"<"自动转码为html的格式,也就是说不会弹出提示。

<%=Viewdata["message"]%>显示时,并不会转换,而是直接在页面弹出对话框。

扩展Htmlhelper

扩展时需要注意三个要素,即:静态类,静态方法,this关键字。

在models中新建一个类,代码如下:

namespace System.Web.Mvc
{//扩展HtmlHelper方法public static class MyHtmlHelperExt{     //扩展HtmlHelper方法public static string Mylable(this HtmlHelper helper, string txt){return string.Format("<p>您好,{0}</p>", txt);}public static HtmlString MyHtmlStringLable(this HtmlHelper helper, string txt){return new HtmlString(string.Format("<p>您好,{0}</p>", txt));}}
}

这里首先需要注意,namespace System.Web.Mvc,如果不将默认的命名空间变成和HtmlHelper一致的话,在页面中不导入models的命名空间会无法使用,所以若想在其他页面中直接使用,就需要将命名

空间和HtmlHelper一致,这样能使用HtmlHelper的页面,也同样能够使用扩展的方法。

然后需要注意的是第一个扩展的方法,如果直接返回string类型,而不返回HtmlString类型时,那么返回的字符串会被自动转换成html格式,也就是说p标签无效,而微软做的直接就可以返回标签,是因为返回

的是HtmlString类型,所以需要将返回类型设置为HtmlString。

转载于:https://www.cnblogs.com/y8932809/p/4387070.html

MVC3学习 六 HtmlHelper的使用与扩展相关推荐

  1. Windows异常学习笔记(四)—— 编译器扩展SEH

    Windows异常学习笔记(四)-- 编译器扩展SEH 要点回顾 编译器支持的SEH 过滤表达式 实验一:理解_try_except 实验二:_try_except 嵌套 拓展SEH结构体 scope ...

  2. 前端学习六——html5+CSS3

    前端学习六--html5+CSS3 HTML5 H5新增语义标签 多媒体标签 audio音频标签 audio音频标签常见属性 音频标签语法 视频标签video 视频标签语法 H5新增input表单.表 ...

  3. 鸿蒙Hi3861学习六-Huawei LiteOS-M(软件定时器)

    一.简介 软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器.当经过设定的Tick时钟计数值后,会触发用户定义的回调函数.定时精度与系统Tick时钟周期有关. 硬件定时器受硬件的限制,数量上 ...

  4. Apollo代码学习(六)—模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

    Apollo代码学习(六)-模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

  5. 艾伟:C#多线程学习(六) 互斥对象

    本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习( ...

  6. C#多线程学习(六) 互斥对象

    C#多线程学习(六) 互斥对象 原文链接:http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个 ...

  7. MVC3 学习总结一(未发布)

    MVC3 学习总结一(未发布) MVC:  Model,View,Control 设置View中的数据 1. 返回model,View中强类型化 Control: public ActionResul ...

  8. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  9. PyTorch框架学习六——图像预处理transforms(二)

    PyTorch框架学习六--图像预处理transforms(二) (续)二.transforms的具体方法 4.图像变换 (1)尺寸变换:transforms.Resize() (2)标准化:tran ...

最新文章

  1. 王立飞:专注己之长 跨界求发展
  2. R语言β分布函数(dbeta、pbeta、qbeta、rbeta)实战
  3. 算法——遗传算法基础
  4. 网站建设设计的基本事项需了解!
  5. 2020年余丙森概率统计强化笔记-第一章 随机事件及其概率-第二章 一维随机变量及其分布
  6. java 权重_java实现权重随机算法
  7. BootStrap2学习日记16---选项卡内容
  8. 隔空互撕!李想炮轰团车造车是“骗子”,团车CEO回怼:别把自己当先知
  9. fedora中linux改成英文,Fedora的英文界面下使用中文
  10. 精品网站 mysql,【网址导航系统】基于PHP+MYSQL开发的开源网站分类目录管理系统...
  11. IM 即时通讯实现原理
  12. 基于海康威视IP摄像头和虹软的MFC人脸识别系统开发教程
  13. 不稳定排序算法有哪些
  14. 英语问题,(有些答案不对,不对的请说一声)
  15. 关于在win10电脑开启移动热点,手机连上wifi显示无互联网连接的问题
  16. 独家专访英特尔AI布道师 | 通信工程到人工智能的高质量转型
  17. [Qt]图像处理小软件——给证件照换背景
  18. axios发送请求,后端报错:所需的防伪表单字段“__RequestVerificationToken”不存在
  19. 前端基础(二)----- CSS初识
  20. python中箭头是什么意思_python流程框里面的箭头是什么意思

热门文章

  1. 使用Ethereal的过滤器解释
  2. 基于指数平滑对心电信号进行PQRST模拟(第二种方案)
  3. linux下面的浏览器不停自动打开新网页
  4. 4-3 数据离散化(无error版本)
  5. 入门无人驾驶学习路线
  6. 正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数
  7. 云计算逼迫运营商重新出海
  8. Linux下CURL设置请求超时时间
  9. 蒙提霍尔游戏 python 模拟
  10. PAT (Advanced Level) 1035. Password (20)