ASP.NET MVC重点教程一周年版 第八回 Helper之演化

凡事出现必有原因

就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的。

而Helper则是为了方便View的开发而产生的。

下面我们来解决几个问题,来看看Helper是怎么演化出来的。

题目:如何在View中写一个超级连接连接到主页?

这个问题看起来很好回答:

<a href="/home/index">首页</a>

其实上面这种不能称之为方案的写法其实是最好的,没有调用任何的方法,仅用纯的HTML就解 决了问题。

但是如果Route规则改变了那怎么办呢?就像原来的

routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action =  "Index", id = "" }
      );

改为了

routes.MapRoute(
        "Default",
        "{controller}/{action}.htm",
        new { controller = "Home", action = "Index"  }
      );

扩展名变了,如果按上个答案那连接就要改为

<a href="/home/index.htm">首页</a>

如果项目中涉及到此Route规则的引用有很多的话,那么这么批量的改肯定会累死人的,而且还 容易出错

那我们应该怎么办呢?

所以我们就要用UrlHelper

<a href="<%=Url.Action("Index","Home")% >">首页</a>

这样在Route规则变化的情况下也会得到正确的地址

上面的方法使Url可以应对变化,可是还有一个问题就是href=”<%=%>”这种 方式在VS中是很难智能感知和调试的,所以要有一种很好的调试方式于是就产生了最初的 HtmlHelper

<%=Html.Action("首页","Index","Home")% >

这样就可以方便智能感知及调试了,而且代码也比较干净

上述的浅见描述了为何出现Helper,希望新学习ASP.NET MVC的朋友有所帮助。

时间: 2024-08-02 20:12:05

ASP.NET MVC重点教程一周年版 第八回 Helper之演化的相关文章

ASP.NET MVC 重点教程一周年版 第八回 Helper之演化

凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的. 而Helper则是为了方便View的开发而产生的. 下面我们来解决几个问题,来看看Helper是怎么演化出来的. 起 题目:如何在View中写一个超级连接连接到主页? 这个问题看起来很好回答: <a href="/home/index">首页</a>   承 其实上面这种不能称之为方案的写法其实是最好的,没有调用任何的方法,仅用纯的HTML就解决了问题. 但是

ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应. 2.其实在ASP.NET MVC中View的aspx与母版页并不像WebForm中那样紧密关联. 例如我想更换一个aspx的母版页,只要在Action中return 时指定所要使用的Master即可: 如图我有2个Master文件,而/Views/Home/Index.aspx则为 这时我们如果想要使用Site2做为Master,只要在Action中retur

ASP.NET MVC重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任 何Controller与之相对应. 2.其实在ASP.NET MVC中View的aspx与母版页并不像WebForm中 那样紧密关联. 例如我想更换一个aspx的母版页,只要在Action中return 时指定所要使用 的Master即可: 如图我有2个 Master文件,而/Views/Home/Index.aspx则为 这时我们如果想要使用Site2做为Master,只要在Action中r

ASP.NET MVC重点教程一周年版 第七回 UrlHelper

这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方法,那为什么要有Helper呢? 其实无非是将界面与逻辑分离,而且Asp.net MVC也并不只支持Aspx一种View(还可以扩展出来 很多),在扩展包中,也有Castle的NVelocity引擎和Boo,以及ViewSpark的页面. 所以,如果在Aspx中定义方法的话会影响其扩展性和可移植性.

ASP.NET MVC重点教程一周年版 第六回 过滤器Filter

在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能 判断登录与否或用 户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置 实现动态Action Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或 它的Controller). Filter要继承于ActionFilterAttribute抽象类,并可以覆写void OnActionExecuting(ActionExecutingContext)和 void OnActionE

ASP.NET MVC重点教程一周年版 第三回 Controller与View

这节我们让ASP.NET MVC真正的跑起来 一.新建Controller 首先我们自己新建一 个新的Controller在Controllers上点右键,添加,Controller选项 之后出现一个对话框: 这里我们将 之起名为EiceController 附注一下,这里是个纯广告,无兴趣可略过此行:www.eice.com.cn 为您建立Web2.0社交网站 默认生成的代码如下: //记不记得前面讲过的,所有 Controller都要继承于Controller类 public class E

ASP.NET MVC 重点教程一周年版 第十回 请求Controller

    其实我们通常遇到的请求方式无非get/post,但是有很多Web开发人员仍然对二者分不清.     get即通过URL中的QueryString向服务器端传值的方式,它的数据是可见的,可post则是通过一个postdata包向服务器传值,post方式可以传送更多数据(如上传文件),也更安全(如登录).     本文将演示各种通过客户端页面(即最终生成的页面)向Controller提交请求以及在Controller中接受的方式. 约定     本文所有的示例都将是演示一个登录过程,但并不关

ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter

在Asp.netMvc中当你有以下及类似以下需求时你可以使用Filter功能 判断登录与否或用户权限 决策输出缓存 防盗链 防蜘蛛 本地化与国际化设置  实现动态Action Filter是一种声明式编程方式,在Asp.net MVC中它只能限制于Action(或它的Controller). Filter要继承于ActionFilterAttribute抽象类,并可以覆写void OnActionExecuting(ActionExecutingContext)和 void OnActionEx

ASP.NET MVC 重点教程一周年版 第七回 UrlHelper

这节讲 一下ASP.NET MVC中的Helper. 何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组. 其实ASP.NET MVC的View是Aspx的页面,本身可以声明定义方法,那为什么要有Helper呢? 其实无非是将界面与逻辑分离,而且Asp.net MVC也并不只支持Aspx一种View(还可以扩展出来很多),在扩展包中,也有Castle的NVelocity引擎和Boo,以及ViewSpark的页面. 所以,如果在Aspx中定义方法的话会影响其扩展性和可移植性.而