當前位置:首頁 » 網頁前端 » netweb自定義控制項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

netweb自定義控制項

發布時間: 2022-07-05 23:16:36

⑴ 關於asp.net自定義控制項的問題

看看自定義控制項的部署一章
方式一:共享位置
方式二:嵌入程序集,估計你是採用這種方式

如何使用方式二:
1. 需要源文件屬性為嵌入資源
2.添加屬性在AssemblyInfo.cs中
[assembly:WebResource("資源名稱","MIME類型")]
3.重寫OnPreRender,注冊資源(就是生成頁面中對資源引用,估計你的沒有引用,所以才有腳本錯誤吧)
資源url用Page.ClientScript.GetWebResourceUrl方法取到
RegisterClientScriptResource

⑵ asp.net 自定義控制項

先貼源代碼~一會再解釋~

新建一個類庫/伺服器控制項項目,添加TextBox.cs文件,復制以下代碼~
TextBox.cs

using System.Collections.Specialized;

namespace MyControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:TextBox runat=server></{0}:TextBox>")]
public class TextBox : WebControl,IPostBackDataHandler
{
#region //event
public event EventHandler TextChanged;
#endregion

#region //Properties
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "" : s);
}
set
{
ViewState["Text"] = value;
}
}
#endregion

#region //Render Engine
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Input;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
writer.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value, Text);
base.AddAttributesToRender(writer);
}
#endregion

#region //realize the interface IPostBackDataHandler
public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
if (postCollection[postDataKey] != Text)
{
Text = postCollection[postDataKey];
return true;
}
return false;
}

public void RaisePostDataChangedEvent()
{
if (TextChanged != null)
TextChanged(this, EventArgs.Empty);
}
#endregion
}
}

測試自定義控制項的步驟:
右鍵項目,選擇【生成】

新建一個網站,新建/Bin目錄,右鍵【添加引用】,導航到上一個新建的項目的.ddl文件。

default.aspx的源代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="MyControl" Namespace="MyControl" TagPrefix="lark" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>無標題頁</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<lark:TextBox runat="server" ID="tbInput" OnTextChanged="tbInput_TextChanged"></lark:TextBox>
<asp:Button ID="btnSubmit" runat="server" Text="提交" />
<asp:Label ID="lblShowInput" runat="server" ></asp:Label>
</div>
</form>
</body>
</html>

default.aspx.cs
protected void tbInput_TextChanged(object sender,EventArgs e)
{
lblShowInput.Text = "您輸入的是:" + tbInput.Text;
}

==============源代碼部分(完)===================

下面隨便解釋下源代碼哈~
1。自定義控制項其實就是個類,該類繼承自WebControl類,同時實現IPostBackDataHandler介面~
2。添加自定義屬性Text,並將之存儲在控制項的ViewState集合中~
3。添加自定義事件TextChanged
4。編寫控制項的生成引擎:
重寫TagKey屬性為INPUT,以修改外圍標記
重寫AddAttributeToRender()方法,為外圍標記<input/>添加type value name屬性。

5。實現IPostBackDataHandler介面的兩個方法:
LoadPostData():接收投遞的表單值,用於更新Text屬性值。若屬性值變化,返回true,自動調用RaisePostDataChangedEvent()方法。
RaisePostDataChangedEvent()方法中激活TextChanged事件~

以上~

自定義控制項是ASP.NET中比較難懂的概念了~但是一旦掌握了的話,對之前ASP.NET的許多知識點都會有質的飛躍哦~

⑶ asp.net1.1自定義web控制項(.cs)的Js該如何處理

比如 有control.js

它其中寫入以下方法
//隱藏div
function closeDiv()
{
$("itemdiv").style.display="none";
}
在頁面引用如下:
<script type="text/javascript" src="../../js/control.js"></script>

調用js 的closeDiv()隱藏div
方法
<div id="itemdiv" class="div" onmouseover="closeDiv()" style="width: 190px; height:100px" align="center"></div>

⑷ 怎樣用C#寫一個asp.net的web自定義控制項

別激發RowEditing了,手寫吧。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" OnRowDataBound="gv_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="tb" runat="server" OnTextChanged="TextBox1_TextChanged" AutoPostBack="True"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;

public partial class WebUserControl : System.Web.UI.UserControl
{
protected void Page_Load( object sender , EventArgs e )
{
if ( !IsPostBack )
{
List<string> ss = new List<string>();
for ( int i = 0 ; i < 10 ; i++ )
{
ss.Add( i.ToString() );
}
gv.DataSource = ss;
gv.DataBind();
}
}
protected void TextBox1_TextChanged( object sender , EventArgs e )
{
string str = ( (TextBox)sender ).Text;
}
protected void gv_RowDataBound( object sender , GridViewRowEventArgs e )
{
if ( e.Row.RowType != DataControlRowType.DataRow )
{
return;
}
TextBox tb = (TextBox)e.Row.Cells[0].FindControl( "tb" );
tb.Text = e.Row.DataItem.ToString();
}
}
//如果是多行顯示,可以再往裡放一個隱藏域,用來記錄數據的唯一約束鍵。

⑸ asp net中自定義控制項怎麼放到web頁面上

你可以通過查看網頁的源代碼發現這個問題。html控制項是asp時代用得最多的控制項,都是存在於客戶端的,當數據做提交的時候會獲取表單內這些控制項的值然後傳給伺服器端做處理,這個提交的操作之前能夠在客戶端對這些控制項進行一些基本的數據驗證之類的功能,由於在客戶端實現數據驗證,對伺服器的壓力會比較小。總之,
既然你已經開始進入.net
,就不要仍然用老的思路和方法來實現功能,最好使用web控制項,不過要注意的是web控制項為了實現伺服器端的代碼,幾乎每個控制項都是需要刷新頁面的,要和伺服器實現互動,這樣無形加重了伺服器端的壓力。

⑹ .Net中控制自定義控制項的位置

通過
Top和Left屬性可以控制位置

也可以建立一個Panel控制項
然後通過Panel的Controls.Add方法加入button來固定Button的位置
-------------------------------------------------------------

Top和Left是Thickness的屬性
也就是修改button.Margin.Left或button.Margin.Top來改變屬性

http://msdn.microsoft.com/zh-cn/library/system.windows.thickness_properties.aspx

⑺ asp.net中自定義控制項的問題

讓這個空間繼承自 Button控制項,並且Button的Text屬性設置「瀏覽。。。」

⑻ asp.net如何編寫自定義控制項

編寫的自定義控制項實現的功能是:在一個自定義的文本輸入框內,給它指定正則表達式,就能知道輸入框的字元串是否符合給定的正則表達式。
正則表達式講完了,我們開始講自定義控制項。
分析一下需求,其實就是對原有的Textbox控制項加入2個屬性,一個是RegularExpression屬性,來設置這個自定義文本框的給定正則表達式。另外一個就是有一個屬性來指示自定義文本框內的內容是否與給定的正則表達式相匹配的結果,這個屬性就叫IsMatch,它是一個bool值。
在asp.net下編寫自定義控制項,一個最簡單的方法就是使用繼承關系。那樣,可以得到所有的父類的非私有成員。所以:
步驟一:新建一個類庫項目,命名為CustomTexBox
步驟二:在項目中引入web.dll,因為在類庫項目中並不是自帶就有web.dll的
步驟三:新建一個類,繼承自System.Web.UI.WebControls.TextBox,可以得到所有的父類的所有非私有成員。
步驟四:新加入2個屬性,RegularExpression IsMatch,具體代碼看下面:
using System;
using System.Text.RegularExpressions;
namespace CustomTextBox{/// <summary
/// 正則表達式驗證文本框
/// </summary
public class RegBox:System.Web.UI.WebControls.TextBox{private string regularExpression;
/// <summary
/// 指定正則表達式
/// </summary
public string RegularExpression{get{return regularExpression;}set{regularExpression = value;}}/// <summary
/// 返迴文本框內容是否匹配給定的正則表達式,只讀屬性/// </summary

⑼ 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 應用程序) 主題。