博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 学习笔记_08 控件和母版
阅读量:6171 次
发布时间:2019-06-21

本文共 5159 字,大约阅读时间需要 17 分钟。

1、ASP.NET的好坏处

CodeBehind:“前aspx后cs”的模式,

(1、aspx(控件定义、html、css)控制页面长相,cs控制程序逻辑
aspx就是模板引擎,不需要再去寻找第三方的模板引擎
(2、aspx中调用cs的成员级别必须是protected或者public不能是private
因为当前this执行的是当前的子类(通过反编译查看)

2、

Literal:

Mode属性,避免XSS攻击

TextBox:

AutopostBack=true 焦点离开Textbox提交表单
ASP.NET中经常不直接调用submit而是调用_doPostBack方法提交表单
TestChanged事件配合AutopostBack可以点击submit自动提交表单更新输入文本

Button:OnCLientClick

return confirm("真的要执行吗?")

3、Button、LinkButton、ImageButton让多个控件共享一个处理函数:

command属性设置响应函数
CommandArgument=“daomul”(命令参数传参数)
CommandName=“Remove”(名字)

4、

Panal:

弄成"高级设置"(fieldset)的渲染形式:GroupingText=“高级设置”

HyperLink:引用站内内部资源的时候很方便(自动转换路径)

NavigateUrl属性

5、

FileUpload:

FileUploadl.HasFile:用户是否选择了文件
FileUploadl.SaveAs("根目录全路径"):
Server.Mapath或者VirtualPathUtility.ToAbsolute都可以
path=Server.Mapath(“~/upload/”);

漏洞:(只允许上传指定类型的文件)

System.IO.File.Delete(Server.Mapath.("~/upload/"));

System.IO.File.ReadAllText(Server.Mapath.("~/upload/"));

6、实例:注册界面

Register.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx.cs" Inherits="登陆注册.Register" %>    
密码强度:
注册用户

Register.apsx.cs

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using 登陆注册.DAL.DataSet1TableAdapters; 8 using System.Text.RegularExpressions; 9 10 namespace 登陆注册11 {12     public partial class Register : System.Web.UI.Page13     {14         protected void Page_Load(object sender, EventArgs e)15         {16             17         }18 19         protected void btnRegister_Click(object sender, EventArgs e)20         {21             //服务器版测试是否符合要求:邮箱饿坏密码22             if (txtPassWord.Text != txtPassWord_Second.Text)23             {24                 LabelErrorMsg.Text = "密码不一致!";25                 LabelErrorMsg.Visible = true;26                 return;27             }28             Regex reEmail = new Regex(@".+@.+");29             if (!reEmail.IsMatch(txtEmail.Text))30             {31                 LabelErrorMsg.Text = "Email格式不正确!";32                 LabelErrorMsg.Visible = true;33                 return;34             }35             LabelErrorMsg.Visible = false;36             T_userInfoTableAdapter adapter = new T_userInfoTableAdapter();37             if (adapter.GetDataByUserName(txtUserName.Text).Count >= 1)38             {39                 errorMsg.Visible = true;40                 errorMsg.Text = "用户名重复,请重新输入!";41                 return;42             }43             long userId=Convert.ToInt64(adapter.InsertUser(txtUserName.Text, txtPassWord.Text,44                 txtEmail.Text));45             //读取Session登陆信息46             Session["登陆ID"] = userId;47             Session["登陆标记"] = true;48             //设置可以传参数的公共跳转页面49             //作用1:告诉用户注册成功,作用2:防止用户点击刷新重复提交数据50             Response.Redirect("target.aspx?Msg=注册成功即将转向登陆界面&RedirectURL=login.aspx");51         }52 53         protected void txtUserName_TextChanged(object sender, EventArgs e)54         {55             T_userInfoTableAdapter adapter = new T_userInfoTableAdapter();56             if (adapter.GetDataByUserName(txtUserName.Text).Count >= 1) {57                 errorMsg.Visible = true;58                 errorMsg.Text = "用户名重复,请重新输入!";59             }60             else{61                 errorMsg.Visible = false;62             }63         }64     }65 }

其中要用到的正则表达式:

插入数据记录:INSERT INTO [dbo].[T_userInfo] ([sUserName], [sPassWord], [Email])  output Inserted.Id VALUES (@sUserName, @sPassWord, @Email)

(1、增加SQL语句,

(2、增加一个output Insert.Id 在Insert语句当中

(3、设置ExecuteMode属性为Scalar

7、三种控件的区别:html控件、服务端控件。runat=server 的控件(最好)

a1.Attributes("aaa")="建属性赋值";

8、验证控件

(1、 RequiredFieldVal:

设置哪个控件和显示名称(还有CausesValdation焦点移开) -----为空
初始值:InitleValue(请输入关键字、包括下拉框的初始值)

Validator共性

!!!!!!!!!!
if(!IsValid){return;}
if(this.IsValid){//防止跳过客户端校验IsValid表示页面中所有Validator是否都通过了
label1.Text="";
}
else{
label1.Text="客户端填写不足或有错误";
}

ValidstionGroup 分组(表单可以在页面内单个组提交,而不关联其他组)相同于按钮的name

(2、RangeValidator:范围验证

最大最小比较
    Date.Now.()baidu下

(3、只有RequiredFieldValidator可以对字段为空进行验证

(4、CompareValidator:比较验证(类型校验、与其他控件比较、)

       ControlToCompare设置为要比较的控件

RegularExpression:

VaildationExpression 正则表达式验证

CustomVaildate自定义控件验证

ServerValidate服务端校验代码

ClientVlidtionFunction

(5、ValidationSummary汇总错误信息

text 和ErrorMsg的区别,ErrorMsg就是用于ValidationSummary中,
而text则是直接显示在验证控件位置

 

 母版:

//操作模板页的控件

Button btn=(Button)this.Master.FindControl("Button1");
btn.Visible=!btn.Vissble;

this.Master.Mapath();

虚拟路径转化为客户端访问的路径(不是服务端控件):

src="<%=ResolveClientUrl%>"

this.ResolveClientUrl();

ResolveClientUrl:考虑当前页面的路径
ResolveUrl:生成一个从根开始的路径

 

 

转载地址:http://lovba.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
Supported plattforms
查看>>
做自己喜欢的事情
查看>>
CRM安装(二)
查看>>
Eclipse工具进行Spring开发时,Spring配置文件智能提示需要安装STS插件
查看>>
NSURLCache内存缓存
查看>>
jquery click嵌套 事件重复注册 多次执行的问题
查看>>
Dev GridControl导出
查看>>
开始翻译Windows Phone 8 Development for Absolute Beginners教程
查看>>
Python tablib模块
查看>>
站立会议02
查看>>
Windows和Linux如何使用Java代码实现关闭进程
查看>>
0428继承性 const static
查看>>
第一课:从一个简单的平方根运算学习平方根---【重温数学】
查看>>
NET反射系统
查看>>
Oracle12C本地用户的创建和登录
查看>>
使用JS制作一个鼠标可拖的DIV(一)——鼠标拖动
查看>>
HDU problem 5635 LCP Array【思维】
查看>>
leetcode10. 正则表达式匹配
查看>>
redis常用命令--zsets
查看>>