1、C#.NET自定义控件怎么动态加载普通控件?
将DropdownList作为控件添加到Controls集合
关于添加控件的方法
lizhangyong420已经说了
我就不再赘述
在Render方法中将控件中的DropdownList取出来
在需要的时候调用RenderControl方法,举个简单的例子:
public
class
CustomizeControl:WebControl
{
protected
override
Render(HtmlTextWriter
writer)
{
writer.WriteLine("<div>");
foreach(WebControl
control
in
this.Controls)
{
if(control
is
DropDownList)
{
control.RenderControl(writer);
}
}
writer.WriteLine("</div>");
}
}
2、.net自定义的服务器控件如何调用Request
HttpBrowserCapabilities b = Request.Browser;
Response.Write("客户端浏览器信息");
Response.Write("<hr>");
Response.Write("类型:"+b.Type+"<br>");
Response.Write("名称:"+b.Browser+"<br>");
Response.Write("版本:"+b.Version+"<br>");
Response.Write("操作平台:"+b.Platform+"<br>");
Response.Write("是否支持框架:"+b.Frames+"<br>");
Response.Write("是否支持表格"+b.Tables+"<br>");
Response.Write("是否支持COOKIES"+b.Cookies+"<br>");
Response.Write("<hr>");
3、如何开发asp.net 服务器控件
1:用户控件很简单,相信楼主不是跑这里来问这个吧。
2:如果是自定义控件,那可能就比较麻回烦了,这个应该说答是属于另一个领域了。楼主需要在网上找些自定义控件的一些资料。
自定义控件比较麻烦(如:Word编辑框、分页控件),这个需要楼主自己来学了。
我个人认为,一般的程序,用用户控件就完全可以解决了。
"是asp.net的一些控件不符合我的使用习惯,想自己编写一些符合自己习惯的",呵呵,不知道楼主这个习惯好不好。建议楼主符合微软的思想、习惯...这样有助于更深的理解和学习asp.net。
4、asp.net自定义用户控件问题
自定义服务器控件是扩展 ASP.NET Web 服务器控件的功能的一种方式。下文提供了针对自定义服务器控件的用户和开发人员的基本安全准则。有关创建自定义服务器控件的更多信息,请参见开发自定义 ASP.NET 服务器控件。
IDE(如 Microsoft Visual Studio 2005)简化了自定义控件的使用及开发。但是,无论使用哪一 IDE,下面列出的安全准则均适用。
有关 ASP.NET Web 应用程序安全性的常规信息,请参见 ASP.NET Web 应用程序安全性。
针对自定义服务器控件用户的准则
您可以通过多种方式在 Web 应用程序中使用自定义服务器控件,例如,可以将源代码文件直接放在 Web 应用程序的 App_Code 文件夹中,从全局程序集缓存使用控件,或者使用通过自动安装程序(如 Visual Studio 内容安装程序)安装的社区组件。无论在何种情况下,都应采取防范措施以防止导入恶意代码或对 IDE 和承载组件的服务器产生意外但有负面影响的代码。
下面提供了自定义服务器控件的用户应考虑的一些安全准则。此列表可能不够全面,但可以从此着手进行调查:
不要使用不熟悉的代码或不了解其安全隐患的代码。对于社区组件,建议您阅读可用的发行者信息并确定是否对组件进行了签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序.
不要仅仅考虑控件的运行时安全性,还要考虑其设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。
如果可能,在强名称程序集中使用自定义控件并选择受信任的发行者。有关更多信息,请参见如何:确定程序集的完全限定名。
使用最少特权帐户运行包括导入的控件的 ASP.NET Web 应用程序。有关使用具有最低权限的标识运行 ASP.NET 进程的更多信息,请参见配置 ASP.NET 进程标识。在诸如 Visual Studio 2005 或 Visual Web Developer 速成版这样的 IDE 中,除非您需要执行管理任务,否则以普通用户的身份而不要以管理员的身份运行应用程序。 有关更多信息,请参见 User Rights and Visual Studio 和 用户权限和 Visual Studio.
查看承载自定义服务器控件的服务器上的操作系统安全性和 Windows 访问控制列表 (ACL)。例如,应确保使用仅具有运行应用程序所需的最低权限的标识来运行 ASP.NET 进程,这样便可将自定义服务器控件导致的安全漏洞对其他承载的应用程序的影响降至最低。有关更多信息,请参见配置 ASP.NET 进程标识。另外,查看自定义服务器控件的权限,并确保它们遵循文件和文件夹权限,ASP.NET Web 应用程序的标识必须具有该权限才能正常工作。有关更多信息,请参见 ASP.NET 必需的访问控制列表 (ACL)。
使用代码访问安全性来限制 Web 应用程序(具有自定义服务器控件)可以访问的资源和可以执行的特权操作。有关更多信息,请参见 ASP.NET 代码访问安全性。
使用 .NET Framework 配置工具 (Mscorcfg.msc) 在全局程序集缓存中管理和配置程序集并调整代码访问安全性策略。因为 Mscorcfg.msc 的用途是帮助高级管理员执行与配置应用程序相关的任务,因此与您的系统管理员合作以确定使用该工具是否符合您的情况。有关更多信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc)。
针对自定义服务器控件开发人员的准则
作为自定义控件的开发人员,您应遵循 ASP.NET 应用程序页和控件以及 .NET Framework 中安全性的常规最佳做法。在许多情况下,自定义服务器控件的用户可能不了解所有实现的详细信息或安全隐患。但是,您应该通过以下内容来计划这一事项:遵循既定的安全约定,并清楚地指出组件正常工作所需的所有权限。您可以从 ASP.NET 网站安全性、.NET Framework 开发人员指南、安全性的基础概念以及“Patterns and Practices Web site”(模式和做法网站) 中安全性主题来着手对常规安全性问题和解决方法进行调查。
设计和实现自定义 Web 服务器控件后,必须确定将组件提供给用户的方法。有两种常用的提供方法:作为程序集提供或作为社区组件提供。如果将组件作为程序集提供,您应对程序集进行签名(也称强名称签名)。签名为程序集提供了唯一标识,其他软件可以使用该标识来识别该程序集并显式引用该程序集。同时,这一方法还可以提供其他好处,使用程序集编程中对这些好处进行了详细介绍。
如果作为具有自动安装过程的社区组件来提供组件,那么您应以加密方式对组件进行签名。签名可以通过创建对特定方唯一的数字签名来帮助验证数据是否发自特定方。其中,创建用于 Visual Studio 2005 的社区组件的一种方法是:使用 Visual Studio 内容安装程序并创建可以对其进行签名的 .vsi 文件。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序.
下面提供了在开发自定义服务器控制组件时应考虑的一些安全准则。此列表可能不够全面,但可以从此着手进行调查:
与自定义服务器控件一同提供有关如何使用这些控件的说明,以及对这些控件正常运行所需的资源和权限的要求。
对组件进行数字签名。如果将自定义控件打包为程序集,则使用强名称对该程序集进行签名。有关更多信息,请参见创建和使用具有强名称的程序集。如果使用自动安装程序(如 Visual Studio 内容安装程序),您仍需要对组件进行签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序.
遵循代码中的异常管理的最佳做法。有关更多信息,请参见“Patterns and Practices Web site”(模式和做法网站) 上的“Chapter 10”(第 10 章)。
如果您希望页开发人员将自定义控件添加到可视化设计器的工具箱,则将它们拖到设计图面上,并在属性浏览器中访问其属性和事件,而且,除了要考虑运行时安全性外,还要考虑设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。
了解对 Web 应用程序页和控件的最高威胁,包括代码注入、信息泄漏、会话劫持、身份欺骗、参数操作和网络监听。为此,应在部署前完成对组件的威胁建模分析。有关更多信息,请参见“Patterns and Practices Web site”(模式和做法网站) 上的“Threat Modeling Web Applications”(威胁建模 Web 应用程序) 主题。
5、设置自定义ASP.NET服务器控件TagPrefix的几种方法求解答
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.ComponentModel;4usingSystem.Text;5usingSystem.Web;6usingSystem.Web.UI;7usingSystem.Web.UI.WebControls;89namespaceServerControl10{11[ToolboxData("<{0}:EmailInputrunat=server</{0}:EmailInput")]12publicclassEmailInput:CompositeControl13{_regValidator;_rqrValidatator;16protectedTextBox_input;{19get20{21returnHtmlTextWriterTag.Div;22}23}()25{26Controls.Clear();27_input=newTextBox();28_input.ID="txtEmail";2930_rqrValidatator=newRequiredFieldValidator();31_rqrValidatator.ID="rqvEmail";32_rqrValidatator.ErrorMessage="请输入邮件地址";33_rqrValidatator.Text="*";34_rqrValidatator.Display=ValidatorDisplay.Dynamic;35_rqrValidatator.ControlToValidate=_input.ID;3637_regValidator=newRegularExpressionValidator();38_regValidator.ID="revEmail";39_regValidator.Display=ValidatorDisplay.Dynamic;40_regValidator.ErrorMessage="邮件格式错误";41_regValidator.Text="*";42_regValidator.ValidationExpression=@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";43_regValidator.ControlToValidate=_input.ID;4445this
.Controls.Add(_input);46this
.Controls.Add(_rqrValidatator);47this
.Controls.Add(_regValidator);4849ChildControlsCreated=true;50}51}52}方法一、在Web.config中配置,具体做法为:在Web.config文件的System.web节中添加如下代码<pages<controls<addassembly="ServerControl"namespace="ServerControl"tagPrefix="sc"/</controls</pages
说明:assembly表示控件所在的程序集名称,namespace表示控件的命名空间,tagPrefix就是我们所要设置的项了
方法二、在使用该控件的页面添加<%Register%指令,如下<%@Registerassembly="ServerControl"namespace="ServerControl"tagprefix="sc"%说明:assembly表示控件所在的程序集名称,namespace表示控件的命名空间,tagPrefix就是我们所要设置的项了
方法三、通过装饰Attribute来指定tagPrefix,例如在控件类添加如下Attribute
[assembly:TagPrefix("ServerControl","scsc")]
namespaceServerControl{[ToolboxData("<{0}:EmailInputrunat=server</{0}:EmailInput")]publicclassEmailInput:CompositeControl{说明:即使这样定义了,每个页面也都要添加<%Register%指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法
方法四、在控件项目中添加属性文件"Assembly.cs"中添加如下代码来自定义控件的前缀:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Web.UI;
[assembly: TagPrefix("ServerControl","scsc")]
说明:即使这样定义了,每个页面也都要添加<%Register%指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法
最后对上面的四种方法进行说明:
在Web.config中进行自定义是属于应用程序级别的定义,只注册一次即可对整个应用程序有效。其他三种方法都得在引用该控件的页面添加<%Register%指令
asp.net 定义tagPrefix的检测顺序是:assemblyInfo.cs----控件中的attribute装饰 -----webconfig中的配置,也就是说,如果这几种方法您都设置了,那么asp.net 将会采用webconfig的设置方式!相信这也是asp.net覆盖的简单道理了!
6、asp.net如何开发自定义控件
下文提供了针对自定义服务器控件的用户和开发人员的基本安全准则。有关创建自定义服务器控件的更多信息,请参见开发自定义 ASP.NET 服务器控件。IDE(如 Microsoft Visual Studio 2005)简化了自定义控件的使用及开发。但是,无论使用哪一 IDE,下面列出的安全准则均适用。有关ASP.NET Web 应用程序安全性的常规信息,请参见 ASP.NET Web 应用程序安全性。针对自定义服务器控件用户的准则您可以通过多种方式在 Web 应用程序中使用自定义服务器控件,例如,可以将源代码文件直接放在 Web 应用程序的 App_Code 文件夹中,从全局程序集缓存使用控件,或者使用通过自动安装程序(如 Visual Studio 内容安装程序)安装的社区组件。无论在何种情况下,都应采取防范措施以防止导入恶意代码或对 IDE 和承载组件的服务器产生意外但有负面影响的代码。下面提供了自定义服务器控件的用户应考虑的一些安全准则。此列表可能不够全面,但可以从此着手进行调查:不要仅仅考虑控件的运行时安全性,还要考虑其设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。使用最少特权帐户运行包括导入的控件的 ASP.NET Web 应用程序。有关使用具有最低权限的标识运行 ASP.NET 进程的更多信息,请参见配置 ASP.NET 进程标识。在诸如 Visual Studio 2005 或 Visual Web Developer 速成版这样的 IDE 中,除非您需要执行管理任务,否则以普通用户的身份而不要以管理员的身份运行应用程序。 有关更多信息,请参见 User Rights and Visual Studio 和 用户权限和 Visual Studio.查看承载自定义服务器控件的服务器上的操作系统安全性和 Windows 访问控制列表 (ACL)。例如,应确保使用仅具有运行应用程序所需的最低权限的标识来运行 ASP.NET 进程,这样便可将自定义服务器控件导致的安全漏洞对其他承载的应用程序的影响降至最低。有关更多信息,请参见配置 ASP.NET 进程标识。另外,查看自定义服务器控件的权限,并确保它们遵循文件和文件夹权限,ASP.NET Web 应用程序的标识必须具有该权限才能正常工作。有关更多信息,请参见 ASP.NET 必需的访问控制列表 (ACL)。使用代码访问安全性来限制 Web 应用程序(具有自定义服务器控件)可以访问的资源和可以执行的特权操作。有关更多信息,请参见 ASP.NET 代码访问安全性。使用.NET Framework 配置工具 (Mscorcfg.msc) 在全局程序集缓存中管理和配置程序集并调整代码访问安全性策略。因为 Mscorcfg.msc 的用途是帮助高级管理员执行与配置应用程序相关的任务,因此与您的系统管理员合作以确定使用该工具是否符合您的情况。有关更多信息,请参见 .NET Framework 配置工具 (Mscorcfg.msc)。针对自定义服务器控件开发人员的准则作为自定义控件的开发人员,您应遵循 ASP.NET 应用程序页和控件以及 .NET Framework 中安全性的常规最佳做法。在许多情况下,自定义服务器控件的用户可能不了解所有实现的详细信息或安全隐患。但是,您应该通过以下内容来计划这一事项:遵循既定的安全约定,并清楚地指出组件正常工作所需的所有权限。您可以从 ASP.NET 网站安全性、.NET Framework 开发人员指南、安全性的基础概念以及“Patterns and Practices Web site”(模式和做法网站) 中安全性主题来着手对常规安全性问题和解决方法进行调查。设计和实现自定义 Web 服务器控件后,必须确定将组件提供给用户的方法。有两种常用的提供方法:作为程序集提供或作为社区组件提供。如果将组件作为程序集提供,您应对程序集进行签名(也称强名称签名)。签名为程序集提供了唯一标识,其他软件可以使用该标识来识别该程序集并显式引用该程序集。同时,这一方法还可以提供其他好处,使用程序集编程中对这些好处进行了详细介绍。如果作为具有自动安装过程的社区组件来提供组件,那么您应以加密方式对组件进行签名。签名可以通过创建对特定方唯一的数字签名来帮助验证数据是否发自特定方。其中,创建用于 Visual Studio 2005 的社区组件的一种方法是:使用 Visual Studio 内容安装程序并创建可以对其进行签名的 .vsi 文件。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序.下面提供了在开发自定义服务器控制组件时应考虑的一些安全准则。此列表可能不够全面,但可以从此着手进行调查:对组件进行数字签名。如果将自定义控件打包为程序集,则使用强名称对该程序集进行签名。有关更多信息,请参见创建和使用具有强名称的程序集。如果使用自动安装程序(如 Visual Studio 内容安装程序),您仍需要对组件进行签名。 有关更多信息,请参见 How to: Package Community Components to Use the Visual Studio Content Installer 和 如何:打包社区组件以使用 Visual Studio 内容安装程序.遵循代码中的异常管理的最佳做法。有关更多信息,请参见“Patterns and Practices Web site”(模式和做法网站) 上的“Chapter 10”(第 10 章)。如果您希望页开发人员将自定义控件添加到可视化设计器的工具箱,则将它们拖到设计图面上,并在属性浏览器中访问其属性和事件,而且,除了要考虑运行时安全性外,还要考虑设计时安全性。有关更多信息,请参见保证自定义控件设计器组件的安全。了解对 Web 应用程序页和控件的最高威胁,包括代码注入、信息泄漏、会话劫持、身份欺骗、参数操作和网络监听。为此,应在部署前完成对组件的威胁建模分析。
7、c#.net怎么做一个自定义控件
自定义控件分为两种
一种是界面化的,用户自定义控件
UserControl类,界面和普通的窗体差不多,可以随便拖控件在上面
另一种就是继承Control类或者其他控件类
注意点在于,你所说的时钟程序,应该为Class Library工程,生成Dll,
在控件工具箱可以添加工具,参照生成的Dll
前面所说的俩种类型都要生成Dll才可以用
8、设置自定义ASP.NET服务器控件TagPrefix的几种方法
说明:assembly表示控件所在的程序集名称,namespace表示控件的命名空间,tagPrefix就是我们所要设置的项了
方法二、在使用该控件的页面添加<%Register%指令,如下1<%@Registerassembly="ServerControl"namespace="ServerControl"tagprefix="sc"%说明:assembly表示控件所在的程序集名称,namespace表示控件的命名空间,tagPrefix就是我们所要设置的项了
方法三、通过Attribute来指定tagPrefix,例如在控件类添加如下Attribute
[assembly:TagPrefix("ServerControl","scsc")]
namespaceServerControl{[ToolboxData("<{0}:EmailInputrunat=server</{0}:EmailInput")]publicclassEmailInput:CompositeControl{说明:即使这样定义了,每个页面也都要添加<%Register%指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法
方法四、在控件项目中添加属性文件"Assembly.cs"中添加如下代码来自定义控件的前缀:
usingSystem.Reflection;
usingSystem.Runtime.CompilerServices;
usingSystem.Runtime.InteropServices;
usingSystem.Web.UI;
[assembly:TagPrefix("ServerControl","scsc")]
说明:即使这样定义了,每个页面也都要添加<%Register%指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法
最后对上面的四种方法进行说明:
在Web.config中进行自定义是属于应用程序级别的定义,只注册一次即可对整个应用程序有效。其他三种方法都得在引用该控件的页面添加<%Register%指令
asp.net定义tagPrefix的检测顺序是:assemblyInfo.cs----控件中的attribute装饰-----webconfig中的配置,也就是说,如果这几种方法您都设置了,那么asp.net
将会采用webconfig的设置方式!相信这也是asp.net覆盖的简单道理了!
9、自定义asp.net 服务器控件 设计时可以分别选中添加到模板上的子控件
因为自定义控件,就相当于一个控件里,你要处理,可以到自定义控件定义的页面去处理,或者给自定义控件添加属性,传参数进去
10、asp.net如何在后台添加服务器控件
以imgbutton为例
ImageButton img = new ImageButton();
img.ImageUrl = ;
img.Width=165;
img.Height=120;
img.BorderColor = Color.Gray;
img.BorderWidth = 1;
img.PostBackUrl = ;
Panel1.Controls.Add(img);//panel上添加
form1.Controls.Add(img);//表单添加,但是布局不好控制