可以写一个帮助类,如下 using System.Web.WebPages; using System.Web.Mvc; public class Helper { public static UrlHelper...GetUrlHelper() { return ((WebViewPage)WebPageContext.Current.Page).Url; } public static HtmlHelper
从本质上讲,HtmlHelper/UrlHelper实现的对URL的生成最终还是依赖于上面所说的GetVirtualPathData方法。 目录 一、UrlHelper V.S....至于该属性对应的类型ViewContext,它是表示Controller上下文的ControllerContext的子类,而后者通过RequestContext和RouteData属性提供当前的请求上下文和路由数据...HtmlHelper.ActionLink UrlHelper和HtmlHelper分别通过Action和ActionLink方法用于生成一个针对某个Controller的某个Action的URL和链接...下面的代码片断列出了UrlHelper的所有Action重载,参数actionName和controllerName分别代表Action和Controller的名称。...但是在有的时候,我们需要针对注册的某个具体的路由对象来生成URL或者对应的链接,这时候就需要使用的UrlHelper和HtmlHelper的另外一组方法了。
Futures 中的异步Action ASP.NET MVC 重点教程一周年版 第七回 UrlHelper ASP.NET MVC 重点教程一周年版 第六回 过滤器Filter ASP.NET MVC...Asp.net Mvc Codeplex Preview 5 源代码及MVCContrib4pv5发布 Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型.../IIS6下运行,程序示例 Asp.net Mvc Framework可以在Controller中使用的Url.Action方法 Asp.net Mvc Framework在.net 2.0/IIS6下运行...,补全 Asp.net MVC Preview 4 中自定义Jquery的HtmlHelper扩展 Asp.net MVC Preview 4 中使用RenderComponent Asp.net Mvc...3 Asp.net MVC Fckeditor的扩展(支持PV3及自动绑定) Asp.net MVC Render及Redirect的扩展 以下文章是属于Asp.net MVC preview 2 Asp.net
Razor引擎具有两个核心的类型,一个是表示View本身的类型RazorView,另一个则是获取和创建它的RazorViewEngine,我们将用两篇文章对它们分别进行剖析。...方法中,我们利用BuildManager根据当前View文件的虚拟路径得到动态编译后的类型,然后利用该类型以反射的方式创建一个WebViewPage对象。...接下来我们初始化该WebViewPage对象的VirtualPath、VirewContext和ViewData属性,并调用InitHelpers方法对HtmlHelper、UrlHelper和AjaxHelper...SimpleRazorView总是会执行开始页面,所以我们通过调用ViewStartPage的静态方法GetStartPage根据指定的开始页面文件名(_ViewStart)和扩展名列表(cshtml和...很简单,如下面的代码片断所示,这是一个Model类型为Contact的强类型View,在该View中我们直接调用HtmlHelper的扩展方法EditorForModel将作为Model
的扩展方法。...Display and DisplayFor:根据指定的model属性和基于model属性的数据类型和元数据选择一个合适的html标签去渲染【只读状态的视图】 。...Editor and EditorFor:根据指定的model属性和基于model属性的数据类型和元数据选择一个合适的html标签去渲染【编辑状态的视图】。...3、 Custom Html Helpers - 可以通过扩展HtmlHelper类或者通过创建在工具类中创建静态方法来创建自定义Html Helper。...AJAX Helpers 是System.Web.Mvc命名空间中AJAXHelper类的扩展方法。
htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?...因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?...ActionResult 这是Controller 中Action的返回类型,当然返回类型为void或其他类型的除外,如果我问你,在MVC中一共有多少个xxxResult 继承自ActionResult...强类型当然会是一个明智的选择 数据验证 在MVC中特别人性化的地方,就是它提供了很多可以对字段进行验证的特性,我们可以利用或者扩展这些特性来为我们的页面进行数据验证?...MVC提供的数据验证Attribute有很多,我们是否可以正确的使用它,而不会引发各种问题。我记得字段名称如果和View中的ID存在一致,那么会有隐藏的问题存在?
前提: htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?...因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?...今天,我要重点学习的地方是htmlHelper类,有需要的童靴可以一起来哦。 首先,我要创建两张表,文章表和文章分类 1 /*文章*/ 2 CREATE TABLE [dbo]....Html.DropDownList显示文章分类: 1 //数据库查询出所有分类 2 /// 3 /// 获取分类列表 4 //...里面,我们最常用的一些表单元素,下一节我们再深入的了解HTMLHelper,现在你就已经可以做一个网站内容添加页面了~~ ?
根据所请求资源的文件扩展名(在应用程序的配置文件中映射),选择实现 IHttpHandler 的类,对请求进行处理。...接下来,该方法将 routeData 和上下文一起打包成 RequestContext,这就是为相关处理准备的上下文环境。...Action 方法信息;其次,它过滤掉所有有 NonActionAttribute 和 IsSpecialName 标记的方法;第三,当同名有效 Action 被重载时它会抛出异常(提示Controller_MoreThanOneAction...ControllerActionFilter 加到列表,然后提取所有继承层次上基类的过滤器特性。...(viewContext); Html = new HtmlHelper(viewContext); Url = new UrlHelper(viewContext
凡事出现必有原因 就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的。 而Helper则是为了方便View的开发而产生的。...这个问题看起来很好回答: 首页 承 其实上面这种不能称之为方案的写法其实是最好的,没有调用任何的方法,仅用纯的HTML就解决了问题。...controller}/{action}.htm", new { controller = "Home", action = "Index" } ); 扩展名变了...所以我们就要用UrlHelper ">首页 这样在Route规则变化的情况下也会得到正确的地址 转 上面的方法使Url...可以应对变化,可是还有一个问题就是href=””这种方式在VS中是很难智能感知和调试的,所以要有一种很好的调试方式于是就产生了最初的HtmlHelper <%=Html.ActionLink(
HTML结构和一些常用的UI元素; 但是这两个类型所能做的事情很有限,它们只是庞大生成功能的核心模型;我们使用的都是围绕着这两个类型的扩展方法,如: @Html.EditorForModel() 在当前...,在View中引入的类型定义: @model MvcApplication4.Models.Customer 正是这里泛型类型的类型参数,所以围绕着HtmlHelper的扩展方法才变成灵活的泛型的代码生成接口...画红线的部分是View所使用的强类型HtmlHelper对象,类型参数是我们在View中通过@model的方式定义的;画绿色的部分也是强类型的EditorFor方法,同样该泛型方法已经被类型推断过了...View中引入的强类型参数的HtmlHelper,这样任何围绕HtmlHelper进行扩展的扩展方法都会最终使用到类型ViewModel...前面一章我们总结了,对于ViewModel的呈现形式只会有两种,一种是Edit一种是Display,不会有其他的呈现形式,所以在围绕着HtmlHelper对象的扩展方法中大多数都是以这种类别区分的,Edit
先贴一下MSDN的HtmlHelper的链接,MSDN对每一个构造函数、属性、方法和扩展方法都做了说明,我这里就常用的部分方法做一下简要的展示。...扩展方法 借助MSDN的介绍:“扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。”...扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。我们可以回到第一部分对HtmlHelper的扩展类-InputExtension类上,它是对于HtmlHelper的扩展。...静态类 可以从上图看出,InputExtension首先是一个静态类; 静态方法 既然是静态类,那么其所有的方法必然都是静态方法,例如:public static MvcHtmlString CheckBox...(); this关键字 可以从方法名定义中看出,第一个参数都是this HtmlHelper htmlHelper,代表对HtmlHelper类的扩展; 自定义扩展方法 1.在Models文件夹下新建一个类
我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。...对于ASP.NET MVC来说,我们可以通过HtmlHelper/HtmlHelper的扩展方法DropDownList/DropDownListFor和ListBox/ListBox在界面上呈现一个下拉框和列表框...Index操作对应的View定义,这是一个以Model类型为Employee的强类型View,我们通过调用HtmlHelper的模板方法EditorFor将作为Model的Employee.../HtmlHelper的扩展生成“ListControl”的HTML 基于四种“列表控件”的HTML生成是通过定义HtmlHelper的扩展方法来实现的,如下面的代码所示,定义在ListControlExtensions...获取指定列表名称的所有列表项并生成相应的SelectListItem列表,最终通过调用HtmlHelper现有的扩展方法ListBox和DropDownList实现HTML的呈现。
那么这个HtmlHelper类又是一个什么类型的大神呢?...这里就涉及到一个叫做“扩展方法”的东东了,HtmlHelper 类的扩展方法在 System.Web.Mvc.Html 命名空间中。 ...三、随时随地我也能扩展—HtmlHelper扩展方法简介 3.1 扩展方法简介 借助MSDN的介绍:“扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型...扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。...CheckBox(); (3)this关键字 可以从方法名定义中看出,第一个参数都是this HtmlHelper htmlHelper,代表对HtmlHelper类的扩展; 3.3 自定义扩展方法
我们还是将多次使用的Contact作为Model类型,如下面的代码片断所示,类型Contact和Address以及它们的所有属性应用了上面定义的验证特性AlwaysFailsAttribute(《ASP.NET...应用了HttpPostAttribute特性的Index方法具有一个类型为Contact的参数,在此方法中我们将包含在当前ViewData的所有ModelState的值和错误信息呈现出来。...除了通过ValidationMessageFor与ValidationMessage这两个方法显示单条验证消息之外,我们还可以通过调用HtmlHelper的扩展方法ValidationSummary将所有的验证消息一并显示出来...错误消息在EditForModel方法中的呈现 在一个强类型View中调用HtmlHelper的扩展方法EditorForModel将整个Model对象以编辑模式呈现出来时,如果某个属性对应的...Index对应的View的定义,该View的Model类型为Contact,我们仅仅简单地调用HtmlHelper的扩展方法EditorForModel将整个Model对象以编辑的模式呈现出来
ASP.NET MVC通过对HtmlHelper和HtmlHelper的扩展实现了对不同类型的元素的绑定,它们以扩展方法的形式定义在SelectExtensions中。...当我们在操作这些扩展方法的时候,必须手工地提供以 IEnumerable对象表示的列表项。...如果我们建立一个独立的组件来维护这些预定的列表,那么我们就可以定义一些更加简单的扩展方法以避免手工地指定列表项。...的扩展方法实现基于“列表类别”的绑定 现在我们来定义针对HtmlHelper的扩展方法通过从CodeManager获取的Code列表来进行“列表控件”的绑定。...我们为HtmlHelper编写了如下4个扩展方法用于针对DropDownList和ListBox的绑定,在参数中我们无须提供SelectListItem列表,而只需要提供Code和类别即可。
,也许还需要一份不错的文档来描述他的参数,返回类型等,就能被消费端调用和使用。...易碎的设计 API以提供URI的方式来提供服务,而URI在本质上就是一个字符串,作为一个强类型玩家,我不希望这样的字符串分散在各个角落,试想我重命名了一个URI,我不得不搜索并修改所有曾经使用过这个资源的代码...Booking领域模型的实现需要注意下面几点: 所有属性都是private set,意味着领域模型内部属性是靠自己维护的; AirportTransfer为Maybe类型,意味着在一个完整的Booking...这样的一个方法接受两个字符串来生成一个url地址,但这并不是强类型的玩法,所以马上想到通过解析表达式树的方式生成URI,在IUrlHelper上扩展一个方法,使得代码更容易支持重构。...=> _urlHelper.Link((BookingController c) => c.AssignSeat()); } 理论上所有的API都能划分为两类,Command和Query(参考CQRS
现在补上URL路由的学习,至于蒋老师自建的MVC小引擎和相关案例就放在论文提交后再实践咯。...: 类型 简介 RouteBase 提供GetRouteData方法获得RouteData,该对象中属性RouteHandler用于提供HttpHandler对象,Values提供解析Url后的数据,...DataTokens提供自己在路由类型中添加的数据;GetVirtualPath方法根据提供的变量和URL模板生成虚拟路径,是GetRouteData方法的逆过程,用于响应阶段。...,默认为False;属性AppendTrailingSlash和LowercaseUrls用于GetVirtualPath方法是否转变url为小写或在末尾添加"/" 之后展示一个关于注册路由相对完整的例子...,包括是UrlParameter.Optional代表缺省的URL参数,通过Area来划分系统的模块,以及HtmlHelper与UrlHelper相关的内容,相对比较简单就不一一介绍了,只是补充一个Area
View中针对某个子Action方法的调用通过如下所示的HtmlHelper的扩展方法Action来实现。...如下所示的代码反映Action方法Index对应的View的定义,在这里我们直接调用HtmlHelper的扩展方法Action执行定义在HomeController的Action方法DisplayRouteData...我们可以从中看到针对于Controller和Action名称的路由数据和调用HtmlHelper扩展方法Action指定的数据数据均在作为ChildActionValueProvider数据源的字典对象中...除此之外,还具有一个DictionaryValueProvider对象,对应的Key是一个GUID,这正是我们上面介绍的针对在HtmlHelper扩展方法Action中指定的路由数据创建的...如果所有ValueProvider的GetValue方法均返回Null,则ValueProviderCollection的GetValue方法也为Null。
在前面一篇文章中,我们通过对HtmlHelper的扩展简化了对DropDownList(Single-Line-Select)和ListBox(Multiple-Line-Select)的绑定,以及对作为数据源的列表进行单独维护...现在我们为HtmlHelper/HtmlHelper添加一个RadioButtonList/RadioButtonListFor扩展方法实现一组RadioButton的绑定。...[源代码从这里下载] 一、RadioButtonListFor的使用 我们先来显示一下扩展的RadioButtonListFor的方法的用法。...如下所示的是作为Model的Person类型,其Gender(Male/Female)、MaritalStatus(Single/Married)和Country的选项列表通过独立的组件CodeManager...如下所示的是RadioButtonList/RadioButtonListFor两个扩展方法的定义,参数codeCategory表示作为数据源的列表类别,而RepeatDirection 枚举类型则代表同组的
在《为HtmlHelper添加一个RadioButtonList扩展方法》中我通过对HtmlHelper和HtmlHelper的扩展使我们可以采用”RadioButtonList”的方式对一组类型为...二、实例演示 我们还是以《为HtmlHelper添加一个RadioButtonList扩展方法》例子来演示RadioButtonList和CheckBoxList用法。...对于Person的三个基于列表的属性,我们分别调用了自定义的扩展方法RadioButtonListFor和CheckBoxListFor进行了绑定。...方法的最后两个参数分别代表通过CodeManager维护的列表的组别(Gender、MaritalStatus和Country),和同组RadioButton和CheckBox布局方向(水平或者纵向)。...三、两组扩展方法具体实现 现在我们简单地来看看RadioButtonList/RadioButtonListFor和CheckBoxList/CheckBoxListFor这两组扩展方法的实现。
领取专属 10元无门槛券
手把手带您无忧上云