当前位置:首页 » 网页前端 » 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 应用程序) 主题。