customValidator
aspx:
<script language="JavaScript"> function validateNumber(oSrc, args) { args.IsValid = (args.Value % 5 == 0); } </script>
<asp:CustomValidator ID="CustomValidator1" Runat="server" ControlToValidate="TextBox1" ErrorMessage="Number must be divisible by 5" ClientValidationFunction="validateNumber" //客户端验证 OnServerValidate="ValidateNumber">//服务器端验证 </asp:CustomValidator>
cs:
void ValidateNumber(object source, ServerValidateEventArgs args)
{
try
{
int num = int.Parse(args.Value);
args.IsValid = ((num%5) == 0);
}
catch(Exception ex)
{
args.IsValid = false;
}
}
ValidationSummary
以弹出对话框的形式显示错误消息
ShowMessageBox="True"
以带项目符号的验证错误列表形式在web页面上显示错误消息
ShowSummary="False"
关闭客户端验证
EnableClientScript="false"
使用验证组
ValidationGroup=“GroupName”
某控件出现验证错误,变自动获得焦点
SetFocusOnError=“true”
内容页获取Master页面控件的值
Label1.Text=(Master.FindControl("Label1") as Label).Text;
这条语句放在Page_LoadComplete事件中执行,
因为内容页的Page_Load事件总是在Master页面的Page_Load事件后立刻触发
如何高效的在内容页获得Master页面中的服务器控件
Master中:
public Label MasterPageLabel { get { return Label1; } set { Label1 = value; } }
内容页:
protected void Page_Load(object sender, EventArgs e) { Master.MasterPageLabel1.Font.Size = 25; }
低效方法:Master.FindControl("控件名") as 控件类型
通过Page_PreInit事件,使用Page.MasterPageFile属性,给当前内容页指定母版页
protected void Page_PreInit(object sender, EventArgs e) { Page.MasterPageFile = "~/MyMasterPage.master"; }
高速缓存的Master页面
<%@ OutputCache Duration="10" Varybyparam="None" %>
放入内容页,不放在母版页
在对数组使用foreach时,编译好的中间语言(IL)代码与使用for的代码相同,除非需要更复杂的操作,
如逆序迭代或每隔一项进行迭代,否则应使用foreach迭代数组和大多数集合,特定语言的编译器会处理这种情况,
代码不容易出错,且易于理解。
复制数组到新数组中
Person[] people2 = new Person[6];
Array.Copy(people, people2, people.Length);
people 要复制的数组
people2要接受的数组
people.Length要复制的数组长度
MultiView视图中
下面代码写在Page_PreRender事件中
Label2.Text = "Step" + (MultiView1.ActiveViewIndex + 1).ToString() + "of" + MultiView1.Views.Count.ToString();