【整理】ASP.NET MVC 与web form 的自定义控件比较

Web form 的自定义控件:

【整理】ASP.NET MVC 与web form 的自定义控件比较
也有人简单的说:

【整理】ASP.NET MVC 与web form 的自定义控件比较aspx是页面文件
【整理】ASP.NET MVC 与web form 的自定义控件比较ascx是用户控件,用户控件必须嵌入到aspx中才能使用。
【整理】ASP.NET MVC 与web form 的自定义控件比较
【整理】ASP.NET MVC 与web form 的自定义控件比较ascx是用户控件,相当于模板
【整理】ASP.NET MVC 与web form 的自定义控件比较
【整理】ASP.NET MVC 与web form 的自定义控件比较其实ascx你可以理解为Html里的一部分代码,
【整理】ASP.NET MVC 与web form 的自定义控件比较只是嵌到aspx里而已,
【整理】ASP.NET MVC 与web form 的自定义控件比较因为aspx内容多的时候实在是不太好管理,
【整理】ASP.NET MVC 与web form 的自定义控件比较而且你把公共的Html部分写成ascx也可以公用在很多aspx里
【整理】ASP.NET MVC 与web form 的自定义控件比较比如Web页的下面注释部分
【整理】ASP.NET MVC 与web form 的自定义控件比较

=============================================================================
以上是从网站搜索的。
ascx 也相当于ASP中的<!--#include file="Include/md5.asp" -->
看代码得知来个实例:

【整理】ASP.NET MVC 与web form 的自定义控件比较<%@ Register TagPrefix ="HeadBanner" TagName ="Banner" Src ="~/HeadBanner.ascx"%>
【整理】ASP.NET MVC 与web form 的自定义控件比较调用:
【整理】ASP.NET MVC 与web form 的自定义控件比较<HeadBanner:Banner runat ="server"/>.

下面这边文章则系统的讲解了asp.net web form 自定义控件的原理:http://developer.51cto.com/art/201104/255996.htm

 

MVC的自定义控件:

 

 

在asp.net mvc 中每一个Html控件都返回了MvcHtmlString ,他继承了HtmlString。
下面自定义一个关于显示男女性别的自定义Html控件,使在创建页面时,可以直接调用该自定义的Html控件。
可以查看其他的Html控件返回的是HtmlHelper,所以自定义的时候也要返回相同的类型
直接在Controls文件夹下建立要自定义的html控件
代码如下:

[csharp] view plaincopy
  1. using System.Web.Mvc;  
  2. using System.Text;  
  3.   
  4. namespace System.Web.Mvc.Html  
  5. {  
  6.     /// <summary>  
  7.     /// 显示男女性别自定义控件   
  8.     /// </summary>  
  9.     public static class LabelGenderExtensions  
  10.     {  
  11.         /// <summary>  
  12.         /// 获取值时:value值为1表示男,value值为2表示女  
  13.         /// 默认选中男  
  14.         /// </summary>  
  15.         /// <param name="helper"></param>  
  16.         /// <returns></returns>  
  17.         public static MvcHtmlString LabelGender(this HtmlHelper helper)  
  18.         {  
  19.             StringBuilder str = new StringBuilder();  
  20.             str.Append("<input type='radio' name='sex' value=1 checked='checked'></input>");  
  21.             str.AppendFormat("<label for='{0}'>{1}</label>""man""男"); // 显示男性值  
  22.             str.Append("<input type='radio' name='sex' value=2  ></input>");  
  23.             str.AppendFormat("<label for='{0}'>{1}</label>""female""女"); // 显示女性值  
  24.             return new MvcHtmlString(str.ToString());             
  25.         }  
  26.     }  
  27. }  

此类要返回的value值也可以根据参数的方式传入

在页面中只需调用: @Html.LabelGender()  

显示如图:

【整理】ASP.NET MVC 与web form 的自定义控件比较

注意事项:
1、注意创建类的命名空间要与本身的@Html保持一致

2、创建的类须为静态类,命名规则一般后缀为Extensions

能对HtmlHelper控件进行扩展,为建立自己的html标签提供了很大的方便。

转载于:https://www.cnblogs.com/smallerpig/articles/2836114.html