|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
就安全性而言,Java已经远远低于VB.NET,更无法与安全性著称的C#相比。有asp.net内里用了formrunat=server的表单的时分,内里的<asp:button..总不克不及按个回车提交表单,非常不爽。如今终究发明了一个属性能够干这个事变,用this.Form.DefaultButton="ContentPlaceHolder1$btsubmit";
值得注重的是,假如用了masterPage(母板页),那末要在按钮ID前加上母板的ID:ContentPlaceHolderID和一个美圆符($)
代码以下:
<%@PageLanguage="C#"MasterPageFile="~/MasterPage.master"AutoEventWireup="true"CodeFile="login.aspx.cs"Inherits="login"%>
<asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"Runat="Server">
<asp:TextBoxrunat="server"ID="wd"></asp:TextBox><asp:ButtonID="btsubmit"runat="server"Text="提交"OnClick="btsubmit_Click"/>
...........................
</asp:Content>
含母板页的类中:
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Form.DefaultButton="ContentPlaceHolder1$btsubmit";
}
非母板页的类中:
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Form.DefaultButton="btsubmit";
}
---------------------------------------------------另外一种举措是做一个控件-----------------------------------------------------------
人人都晓得。怎样页面只要一个按钮的话。按回车的话。是能够提交的。此时的做法也十分复杂。在click中间接写代码就能够了。页面在提交时,它]认是提交第一个控件的。以是。我在页面的最下面放一个长宽都为0的服务器按钮button1。然在在button1_onclick()中写要提交的代码就能够了。运转时,你按下回车提交。这时候页面提交的就是button1的事务了。哈!是否是很复杂!
弱点:
不必我说了,每一个页面只能存在一个回车提交的事务。
---------------------------------------------------另外一种举措是做一个控件-----------------------------------------------------------
本人写一个控件承继TextBox,增添一个SubmitControl属性用来指定此文本框上按回车时由哪一个按钮来呼应。
再做一个Converter增添计划时撑持,就是在计划时能够用下拉框选择提交按钮。
今朝只思索了Button、LinkButton和ImageButton作为提交按钮,固然承继它们的控件也能够。
本例常识点:控件、属性、承继。
承继:是一个历程,经由过程承继,一个工具能够取得另外一个工具的属性(包含函数),并可向个中到场属于本人的一些特性。作为C++言语的一种主要机制,用承继的办法能够主动为一个类供应来自另外一个类的操纵和数据布局,进而使程序计划职员在一个一样平常的类的基本上很快创建一个新的类,而不用从零入手下手计划每一个类。
当一个类被其他的类承继时,被承继的类称为基类,又称为父类。
承继其他类属性的类称为派生类,又称为子类。
一样平常情形下,承继的历程劈头于一个基类的界说,基类界说了其一切派生类的私有属性。从实质上讲,基类具有统一类汇合中的大众属性,派生类承继了这些属性,而且增添了本人独有的属性。从任何已存在的类承继的本色就是制作新的派生类。
完成历程
1)先创立一个新项目WEB控件库,将此段代码加出来。
publicclassufoTextBox:TextBox
{
[TypeConverter(typeof(SubmitableControlConvertor)),DefaultValue(""),Category("Behavior")]
publicstringSubmitControl
{
get
{
objectret=this.ViewState["SubmitControl"];
if(ret!=null)
{
return(string)ret;
}
returnstring.Empty;
}
set
{
this.ViewState["SubmitControl"]=value;
}
}
protectedoverridevoidAddAttributesToRender(HtmlTextWriterwriter)
{
base.AddAttributesToRender(writer);
if(this.SubmitControl.Length>0)
{
Controlcon=FindControl(SubmitControl);
if(con!=null)
{
stringscript="if(event.keyCode==13){document.getElementById("+con.ClientID+").click();event.returnValue=false;}";
writer.AddAttribute("onkeydown",script);
}
}
}
}
自界说的Converter,用于计划时撑持:
publicclassSubmitableControlConvertor:StringConverter
{
privateobject[]GetControls(IContainercontainer)
{
ComponentCollectioncomponents=container.Components;
ArrayListret=newArrayList();
foreach(IComponentcontrolincomponents)
{
if(!(controlisButtoncontrolisLinkButtoncontrolisImageButton))
{
continue;
}
Controlbutton=(Control)control;
if((button.ID!=null)&&(button.ID.Length!=0))
{
ret.Add(string.Copy(button.ID));
}
}
ret.Sort(Comparer.Default);
returnret.ToArray();
}
publicoverrideSystem.ComponentModel.TypeConverter.StandardValuesCollectionGetStandardValues(ITypeDescriptorContextcontext)
{
if((context!=null)&&(context.Container!=null))
{
object[]controls=this.GetControls(context.Container);
if(controls!=null)
{
returnnewTypeConverter.StandardValuesCollection(controls);
}
}
returnnull;
}
publicoverrideboolGetStandardValuesExclusive(ITypeDescriptorContextcontext)
{
returnfalse;
}
publicoverrideboolGetStandardValuesSupported(ITypeDescriptorContextcontext)
{
returntrue;
}
}
2)将此文件天生.dll文件,在工具箱中增加此dll文件。
3)将此控件拖进响应页面,在Page_Load中加上[此控件的名字].SubmitControl="所提交的按钮的名字";
比方:
WebCustomControl1.SubmitControl="Button1"(双引号不要往失落了!)
当往WebCustomControl1输出完内容以后按回车Button1呼应。
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 |
|