zoukankan      html  css  js  c++  java
  • 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."的方法来查看更多的方法。

  • 相关阅读:
    最小化程序到托盘
    Delphi
    c# 多线程
    下载地址加密
    一个很让我郁闷的java异常
    XmlBeanFactory和ApplicationContext读取spring xml配置文件
    tomcat部署war出错的问题
    JAXB 实现List接口
    Mongo数据模型
    JAXB, Web Services, and Binary Data
  • 原文地址:https://www.cnblogs.com/hippieZhou/p/4487636.html
Copyright © 2011-2022 走看看