ASP.NET MVC之 HtmlHelper 在ASP.NET MVC项目的开发中,一般会默认使用Razor视图来进行View层的编写,从而实现高效率的C#/HTML代码的混写。 示例 诸如下述代码
在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归。所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然。
在众多表单元素中,有一类<select>元素用于绑定一组预定义列表。传统的ASP.NET Web Form中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDownList, ListBox、CheckBoxList和RadioButtonList都是其子类。ASP.NET MVC通过对HtmlHelper和HtmlHelper<TModel>的扩展实现了对不同类型的<select>元素的绑定,它们以扩展方法的形式定义在SelectExtensions中。当我们在操作这些扩展方法
阅读目录: 7.HtmlHelper、HtmlHelper<T>中的ViewModel的类型推断 8.控制ViewModel中的某个属性的呈现(使用PartialView部分视图细粒度控制ViewMo
今天抛开 Fluent NHibernate 不谈,我们来谈谈 Asp.Net MVC ,在MVC的View中,我们经常会使用HtmlHelper来生成各种html代码(可能描述不太清楚看代码吧,呵呵)。 HtmlHelper原先的功能不是很多,还好有很多扩展方法,我们能用它来生成一个Input控件,比如: <%= Html.TextBox("UserID") %> 我们使用上面的代码能生成一个没有值的单行文本框,我们还可以使用: <%= Html.TextBox("UserID", Model.User.
c# 扩展方法出来已久,介绍扩展方法的文章也很多,此处就不多介绍,如有不懂当然可以百度,google一下,园子当中也有超级多的讲解。
我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结合往往可以解决很多特殊数据的呈现问题,我
在《为HtmlHelper添加一个RadioButtonList扩展方法》中我通过对HtmlHelper和HtmlHelper<Model>的扩展使我们可以采用”RadioButtonList”的方式对一组类型为“radio”的<input>元素进行操作。昨天对对此进行了一些改进,并将“CheckBoxList”的功能添加进来。[源代码从这里下载] 一、有何特别之处? 和我的很多文章一样,旨在提供一种大体的解决方案,本解决方案旨在解决如下一些问题: 通过独立的组件对绑定到ListControl(ASP.NE
后台: /// /// 生成分类下拉-列表框,选中指定的项 /// /// <param name="html"></param> /// <param name="selectedValue"></param> /// <returns></returns> public static MvcHtmlString SelectList_Category(this Htm
在前面三篇文章(《ModelValidator》、《ModelValidatorProvider》和《ModelValidatorProviders》)中我们详细介绍了真正用于Model验证的Mode
首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用: //主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ShowPageNavigate(this HtmlHelper htmlHelper, int currentPage, int pageSize, int totalCount) { var redirectTo = htmlHelp
NameValueCollectionValueProvider采用一个NameValueCollection作为数据源,DictionnaryValueProvider的数据源类型自然就是一个Dic
在前面一篇文章中,我们通过对HtmlHelper的扩展简化了对DropDownList(Single-Line-Select)和ListBox(Multiple-Line-Select)的绑定,以及对作为数据源的列表进行单独维护。现在我们为HtmlHelper/HtmlHelper<Model>添加一个RadioButtonList/RadioButtonListFor扩展方法实现一组RadioButton的绑定。[源代码从这里下载] 一、RadioButtonListFor的使用 我们先来显示一下扩展的R
htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握? ActionResult 这是Controller 中Action的返回类型,当然返回类型为void或其他类型的除外,如果我问你,在MVC中一共有多少个xxxResult 继承自ActionResult?你可以在一分钟之内准确的回答吗?如果你的答案是no,那么我们能做的是什么,继续深入,多做笔记,多回忆? Filter 这是MVC 3 中我特别喜欢的一个特性,尤其是增加了全局过滤器以后,更加玩美。在MVC中内嵌了4中Filter,你是否可以说出具体名字呢,是否可以不用智能提示,完全的书写出来呢?Filter 是一种AOP的面向切面的编程方式,我们可以通过继承自FilterAttribute以及对应的接口来自定义实现各种Filter的过滤,我们是否使用过?是否可以正确的编码出来我们需要的Filter呢? Area 我曾经在我的一篇博客中说到这是在MVC 3中出现的一个新特性,但是有园友回复在MVC 2中就已经存在,我找了一下,没有找到添加Area的操作,可能我电脑中缺少某些东西,不讨论这个了。Area 又称为区域,我们可以在一个完整的应用程序中定义不同的功能点,比如前台 和后台的区分?Area 可以轻松的将这两种不同功能点玩美的区分开来,但是我们使用Area的时候 需要注意一些问题?大家是否可以立刻回答都有哪些呢?首先就是要在注册路由中添加命名空间,还有一个就是我们在使用htmlHelper进行页面跳转的时候,这个Area的设置也是必不可少的? ViewEngine 视图引擎,说的好听点就相当于发动机,就是驱动我们程序运行的机制,那么在MVC中我们可以采用的视图引擎有WebFormViewEngine以及RazorEngine这两种,当然我们也可以采用第三方提供的视图引擎?那么我们有没有想过,是否我们自己可以定义自己可以完全掌握的视图引擎来驱动我们程序的运行?如果你说可以,那么你就是真的大牛,如果为no,那么咱们还是老老实实的继续深入吧。 IOC继承 我们知道,MVC对于IOC的实现提供了非常灵活的方式实现,我们可以通过IOC来实现SOC 关注点分离,那么我们采用哪种IOC框架?我本人采用的是AutoFac,以及如果在MVC中使用这种框架来实现程序的灵活性控制呢?当然IOC的实现方式,一共就三种,构造函数,属性还有另外一个不常用的方法注入。我们真的可以在MVC中灵活的实现这些框架吗。继续努力吧 MVC 的运行机制,我们知道asp.net 是一个非常复杂的框架结构,MVC就运行在这种复杂的框架结构之上,那么我们知道在MVC中Controller是如何激活的呢?Action是如何运行的?而使用了Area以后为什么可以定义到不同Area的相同Controller以及Action之上呢?只有掌握了内部原理,我们才可以避重就轻,编写更加简洁而且运行效率更高的代码 IIS 如果在IIS中部署MVC,如果你不参考网上的教程,仅仅凭借你的记忆,你可以正确的让MVC程序在IIS上正确的跑起来吗?我是不敢这么说,因为我一般都是参考网上的教程来做的。 值的传递 在MVC中,Model数据传递到Controller,Controller将数据传递到View,或者View可以从Model直接获取数据,这些数据的传递有什么说法?我们应该如何来避免数据传递带来的程序bug呢?强类型当然会是一个明智的选择 数据验证 在MVC中特别人性化的地方,就是它提供了很多可以对字段进行验证的特性,我们可以利用或者扩展这些特性来为我们的页面进行数据验证?MVC提供的数据验证Attribute有很多,我们是否可以正确的使用它,而不会引发各种问题。我记得字段名称如果和View中的ID存在一致,那么会有隐藏的问题存在?自定义数据验证,我们来扩展我们的业务逻辑。 Razor 语法 这是MVC 3中新添加的一个语法结构,我们可以使用它来完成我们在View层 显示数据,但是使用@符号也有很多问题要注意?我们是否可以想到呢?Razor语法本身是一个非常优雅的语法结构。 对于异常的处理、404 、500等特殊错误的页面,日志的处理,性能优化,程序的安全性考虑 等这些都是我们作为程序员应该掌握的知识,每个知识点如果我们要完全掌握,恐怕我们这一生都要在学习中度过了。
序言 ASP.NET MVC允许开发者创建自定义的HTML Helpers,不管是使用静态方法还是扩展方法。一个HTML Helper本质上其实是输出一段HTML字符串。 HTML Helpers能让我们在多个页面上公用同一段HTML标记,这样不仅提高了稳定性也便于开发者去维护。当然对于这些可重用的代码,开发者也方便对他们进行单元测试。所以,创建ASP.NET MVC Bootstrap Helpers是及其有必要的。 内置的HTML Helpers ASP.NET MVC内置了若干标准HTML Hel
在简单了解了Unobtrusive JavaScript形式的验证在jQuery中的编程方式之后,我们来介绍ASP.NET MVC是如何利用它实现客户端验证的。服务端验证最终实现在相应的ModelValidator中,而最终的验证规则定义在相应的ValidationAttribute中;而客户端验证规则通过HtmlHelper<TModel>相应的扩展方法(比如TextBoxFor、EditorFor和EdidtorForModel等)出现在生成的被验证HTML元素中。毫无疑问,服务端验证和客户端验证必须采
①Html.Partial是HtmlHelper的扩展方法,而Html.RenderPartial是HtmlHelper自带方法,两者功能相近。但
htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?
本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问http://www.dotnettricks.com/free-ebooks自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。 由于个人技术水平和英文水平也是有限的,因此错误在所难免,希
Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。本文提供了一个解决方案利用ASP.NET SiteMap生成与Bootstrap“兼容”的菜单。具体的原理很简单,就是利用SiteMap读取预先定义的网站结构,按照Bootstrap的标准生成相应的HTML。[源代码从这里下载] 我们将基于菜单的呈现定义在HtmlHelper的扩展方法中。如下面的代码片断,扩展方法Render
当我们调用HtmlHelper或者HtmlHelper<TModel>的模板方法对整个Model或者Model的某个数据成员以某种模式(显示模式或者编辑模式)进行呈现的时候,通过预先创建的代表Model元数据的ModelMetadata对象都可以找到相应的模板。如果模板对应着某个自定义的分部View,那么只需要执行该View即可;对于默认模板,则直接可以得到相应的HTML。本篇文章着重讨论模板的获取和执行机制,不过在这之前,顺便来讨论一下DataTypeAttribute和模板的关系。[本文已经同步到《Ho
在总体介绍了筛选器及其提供机制(《深入探讨ASP.NET MVC的筛选器》)之后,我们按照执行的先后顺序对四种不同的筛选器进行单独介绍,首先来介绍最先执行的AuthorizationFilter。从命名来看,AuthorizationFilter用于完成授权相关的工作,所以它应该在Action方法被调用之前执行才能起到授权的作用。不仅限于授权,如果我们希望目标Action方法被调用之前中断执行的流程“做点什么”,都可以以AuthorizationFilter的形式来实现。[本文已经同步到《How ASP.N
本文主要探讨了在.NET平台下,如何利用System.ComponentModel.DataAnnotations命名空间中的特性来对模型属性进行注解,进而实现基于元数据的自定义属性系统。同时介绍了如何在.NET平台下使用自定义的TypeDescriptionProvider类来对元数据进行扩展,以便于实现更加灵活的属性系统。
ASP.NET 路由系统通过注册的路由表旨在实现两个“方向”的路有功能,即针对入栈请求的路由和出栈URL的生成。前者通过调用代表全局路由表的RouteCollection对象的GetRouteData方法实现,后者则依赖于RouteCollection的GetVirtualPathData方法,而最终还是落在继承自RouteBase的路由对象的同名方法的调用上。为了编程的方面,ASP.NET MVC为了设计了HtmlHelper和UrlHelper这两个帮助类,我们可以通过调用它们的ActionLink/R
通过.cshtml或者.vbhtml文件定义的View能够被执行,必须先被编译成存在于某个程序集的类型,ASP.NET MVC采用动态编译的方式对View文件实施编译。当我们在对ASP.NET MVC进行部署的时候,需要对.cshtml或者.vbhtml文件进行打包。针对某个View的第一次访问会触发针对它的编译,一个View对应着一个类型。我们可以对.cshtml或者.vbhtml进行修改,View文件修改后的第一次访问将会导致View的再一次编译。和ASP.NET 传统的编译方式一样,针对View的编译
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
在前面的四篇文章中,我们介绍了各种ActionResult以及相关的请求响应机制,但是与“View的呈现”相关的ActionResult是ViewResult。通过ViewResult的执行实现的对V
mvc自带的DropDownListFor数据源必须是IEnumerable<SelectListItem>。并且option不支持增加自定义属性。在使用bootstrap-select组件的时候,发现不是很好用。所以扩展了一下。
ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需要将相应的ValidationAttribute应用到Model的类型或者属性上即可。对于自定义验证,我们也只需要定义相应的Validation就可以了,不过服务端验证比较简单,而客户端验证就要稍微复杂一些,本文提供一个简单的实例说明在ASP.NET MVC中实现自定义验证的基本步骤。[源代码从这里下载] 一、AgeRangeAttribute 用
英文原文地址:http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx 翻译原文地址:http://blog.joycode.com/scottgu/archive/2007/12/10/112465.aspx 过去的几个星期内,我一直在写着讨论我们正在开发的新ASP.NET MVC框架的系列贴子。ASP.NET MVC框
Razor引擎具有两个核心的类型,一个是表示View本身的类型RazorView,另一个则是获取和创建它的RazorViewEngine,我们将用两篇文章对它们分别进行剖析。Razor引擎下的View
暂时确立了Oracle的课程设计的技术栈使用ASP.NET MVC + Oracle,视时间情况选择是否使用Dapper或者EF,先搭建Web的基础框架,在搭建ASPdotNet MVC项目中遇到了不少问题,专门开一篇用于备份和以后的快速查询。 超链接跳转 直接写链接——变更路由后需要重写 关于我们 Html Helper ——自动匹配路由 @Html.ActionLink("About this application", "About") 跳
model元数据 闲来继续学习蒋金楠大师的ASP.NET MVC框架揭秘一书,当前主要阅读的内容是Model元数据的解析,即使是阅读完的现在,仍然有不少细节不是特别明白。好在这部分内容主要是关于Razor引擎的呈现的,通过注解的方式对Model进行自定的修饰,最终使得页面在渲染时(即从cshtml文件转化为html时),相关的数据能够按照指定的形式转化并显示。由于接下来的项目中不再打算使用Razor引擎,该引擎虽然很不错,但也有一些问题,例如存在HTML5代码与HtmlHelper的混写,使得UI层
基于Web Form引擎的WebFormViewEngine和针对Razor引擎的RazorViewEngine都是抽象类型BuildManagerViewEngine的子类,而后者又继承自VirtualPathProviderViewEngine。在这里我们仅仅对实现在RazorViewEngine中View获取的逻辑进行简单介绍。由于Razor引擎下的View通过RazorView对象来表示,而RazorView通过View文件的虚拟路径来构建,所以RazorViewEngine的View获取机制在于根
项目要求 练习2: @RPHelper.Include("~/1.html") 把~/1.html内容原样输出到这个位置 是项目 ProjectLX001 第一步:假定读取的html文件是这个 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title
这是昨天一个同事遇到的问题,我觉得这是一个蛮大的问题,而且不像是ASP.NET MVC的设计者有意为之,换言之,这可能是ASP.NET MVC的一个Bug(不过也有可能是保持原始请求数据而作的妥协)。StackOverflow上也有对这个问题的描述http://stackoverflow.com/questions/1775170/asp-net-mvc-modelstate-clear 闲话少说,我们通过一个简单的问题重新这个问题。首先我们 定义了如下一个默认的HomeController,它具有一个默认
最近一直在写js,这其中也少不了一位js的主角了jQuery,下面介绍的是jQuery的一些扩展,也就是jQuery的扩展方法,jQuery的扩展方法有两种方式,一种是jQuery本身的扩展方法,另一种是jQuery所选对象的扩展方法,下面一起来看。 一、方式列表: 1.jQuery.extend(Object); // jQuery 本身的扩展方法 2.jQuery.fn.extent(Object); // jQuery 所选对象扩展方法 二、调用示例: 1.jQuery 本身的扩
实现动态切换语言,Demo 做了三种语言库可以切换,包括资源文件的定义,实体对象属性设置,后台代码Controller,IAuthorizationFilter,HtmlHelper的实现,做法比较简单易学易用,配合我之前发布的# MVC Scaffolding SmartCode-Engine 更新 模板中新增了多语言资源文件的生成功能,发现我的这个框架和目前很流行的ABP框架是类似更有点像收费版的Asp.net Zero,只是我做的更加轻量级,更方便,更快速,可惜Asp.net Core 下的Scaffolding这块扩展不想MVC5那么容易.这块还需要研究,下一步就准备升级到asp.net core.
概述: 本篇是对工作中遇到的扩展方法的总结,好记性不如乱笔头,先记下来,以后遇到类似问题,如果忘了,可以看下博客。 一、问题描述: 在项目中遇到一个问题,就是要将左边的代码替换为右边的代码,右边代码是
就像Filter,它是为了解决在一类的Action之前或之后执行统一的代码而产生的。
通过ModelMetadata表示的Model元数据的一个主要的作用在于为定义在HtmlHelper和HtmlHelper<TModel>中的模板方法(这些模板方法包括Display/DisplayFor、Editor/EditorFor、DisplayForModel/EditForModel、Lable/LabelFor和DisplayText/DisplayTextFor等)提供用于最终生成HTML的元数据信息。在调用这些方法的时候,如果我们指定了一个具体的通过分部View定义的模板,或者对应的Mod
不知不觉已经过了13讲,(本来还要讲多一讲是,数据验证之自定义验证,基于园友还是对权限这块比较敢兴趣,讲不讲验证还是看大家的反映),我们应该对系统有一个小结。 首先这是一个团队开发项目,基于接口编程,我们从EasyUI搭建系统的框架开始,开始了一个样例程序对EasyUI的DataGrid进行了操作,并实现Unity的注入到容器,使程序 的性能大大提升,代码质量上升,更佳利于单元测试,使用日志和异常坚固系统稳定性等等。。。。 当然你应该觉得系统还有存在很多不足,我们应该动手来优化一下。 下面我罗列了需要优
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。
ASP.NET MVC 系列文章 以下文章属于ASP.NET MVC 1.0 正式版 ASP.NET MVC雕虫小技 1-2 ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传 ASP.NET MVC 重点教程一周年版 第十回 请求Controller ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper ASP.NET MVC 重点教程一周年版 第八回 Helper之演化 用ASP.NET MVC自己管理自己的View:ASP.NET MVC File
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。
本文主要对 C# 扩展方法进行了详细的介绍,包括扩展方法的声明方式、使用方式以及意义和原理。同时,还提供了一个枚举的扩展方法示例。
In this tutorial, I am not going to discuss the concept in-depth since they have done such a fantastic job. Instead, I want to show how you can easily incorporate the Html.AntiForgeryToken HtmlHelper Method and [ValidateAntiForgeryToken] Attribute in the sample code from our first meeting:Introduction to ASP.NET MVC Screencast and Sample Code.
有园友在博问中提了这样一个问题 —— .NET Core 中文等非英文文字html编码输出问题,到我们的 ASP.NET Core 项目中一看,也是同样的问题。
开篇:在上一篇中,我们了解了自动属性、隐式类型、自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类、匿名方法以及常用的扩展方法。虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙。所以,跟着本篇的步伐,继续来围观。
Module 接口可以自定义实现一些三方类,无默认构造函数的对象,或自定义一些序列化实现。
领取专属 10元无门槛券
手把手带您无忧上云