MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便

先看一下我想要的结果:

很容易它就是一个单选按钮组,当我后台为Html对象(HtmlHelper的一个实例,它被定义在System.Web.Mvc名称空间下的WebViewPage类,即它对于所有MVC页面都可用)建立好扩展方法后,使用以下语句就可以生成上面的效果:

@Html.CreateGanderRadioButton()

扩展方法的定义:

namespace Web.Helper
{
    public static class ExtendHtml
    {
        public static MvcHtmlString CreateGanderRadioButton(this System.Web.Mvc.HtmlHelper html)
        {
            StringBuilder str = new StringBuilder();
            str.Append("<input type=‘radio‘ value=1 name=‘gander‘>男");
            str.Append("<input type=‘radio‘ value=0 name=‘gander‘>女");
            return MvcHtmlString.Create(str.ToString());
 
        }
    }
}
注意,它所在的类必须是public static的,也就是说,它的扩展方法本身也是public static的。
对于,直接在页面上使用我们的方法,还是差了一步,那就是,要在web.config里把Web.Helper名称
空间加上,页面上才能访问的到:
 <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages"/>
        <add namespace="Web.Helper" />
 </namespaces>

OK,现在一个Html对象的扩展方法就做好了,赶快去实践一个吧!

时间: 2024-12-25 08:46:37

MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便的相关文章

MVC中,加入的一个aspx页面用到AspNetPager控件处理办法

今天项目遇到了如题所示的问题,按照官方的案例介绍做分页,简直要奔溃了, 使用URL重写,但是page总是1,根本不跳, 不使用URL重写,又出现,第一页是 http://aa.com/view_aspx/pagetest.aspx?page=1,点击第二页就变成http://aa.com/pagetest.aspx?page=2 这样路径不对 最近解决办法 首先是页面控件部分,特别注意红色部分,那个page一定要用page ,用别的没有用的 <webdiyer:AspNetPager ID=&quo

空对象模式和扩展方法的NULL验证

using System;using System.Collections.Generic;using System.Linq;using System.Text;//空对象模式和扩展方法的NULL验证namespace Chap2_3{ public class NULLObject { public void Test() { Promation promation = PromationFactory.Create("水果促销"); Promation promation1 =

AxcUIKit,一个快速搭建常用UI的控件集合库

空闲下来后,总结了iOS项目开发中常用的几个控件和复用性,就做了一个AxcUIKit,主要用来快速完成项目中的细节需求,其中部分控件是沿用或改造的其他优秀的开源三方库,如: RBPlayer.M13BadgeView.WLUnitField.PPDragDropBadgeView.SDProgress.TTGTagCollectionView.HCSStarRatingView.FSPagerView.DGActivityIndicatorView等等. 每个作者都通过邮件联系过,声明过使用和改

Essential BI PivotGrid可扩展的数据透视表控件介绍及下载

Essential BI PivotGrid是一款强大的可扩展的数据透视表,可用于Silverlight和WPF平台下,和Excel里的数据透视表功能十分相似,用于从大量商业数据中提取重要数据,并对数据进行统计和分组,开发人员可以使用该控件对商业数据进行组织和系统分析.该产品包含在Business Intelligence Edition里. 具体功能: 支持条件格式化,对某些符合条件的单元格进行特别显示 支持导出数据到Excel和Word文档 支持多种数据过滤功能 支持单元格选择,多个单元格选

Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用

原文:Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用 "/vs2005"应用程序中的服务器错误.-------------------------------------------------------------------------------- Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有

如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误

原文:如何解决FormView中实现DropDownList连动选择时出现 "Eval().XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误 FormView控件是可及显示.修改.添加.删除为一体的控件,感觉很好用,可是昨天发现了一个可以说是它的一个Bug吧,我是想要实现下拉框的联动效果,比如在A下拉框选择了省对应B的下拉框会把对应A中省的市显示在B下拉框中,我想要实现的是校区和对应校区建筑的联动效果,单纯的这种效果很好实现比如下面的代码  

一个Activity掌握Android5.0新控件 (转)

原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种. 1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLayout.它是一个带圆角的背景和阴影FrameLayout.CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为容器使用. Ca

一个Activity掌握Android4.0新控件 (转)

原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常用的新控件有下面5种. 1. Switch的使用 Switch顾名思义,就是开关的意思,有开和关两种状态. 当Switch处于关闭状态时: 当Switch处于打开状态时: 怎么在定义xml中定义Switch <Switch android:id="@+id/_switch" andr

Jmeter建立一个扩展LDAP测试计划

添加用户 第一步你想做的每一个JMeter测试计划是添加一个线程组元素. 线程组告诉JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量. 继续添加 线程组 首先选择元素 测试计划 ,点击你的 鼠标右键来获得 添加 菜单,然后选择 添加 一个?? 线程(用户) 一个?? 线程组 . 您现在应该看到 线程组 元素在 测试计划 . 如果您没有看到的元素,然后测试计划树的“扩大” 点击测试计划元素. 图9责任. 线程组的默认值 添加LDAP请求违约 用户首先选择LDAP