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);//表單添加,但是布局不好控制