ASP.NET筆記之 控制項與母板的區別分析

來源:互聯網
上載者:User

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" %>

<!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">

<body>
<form id="form1" runat="server">
<div>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:Label ID="LabelName" runat="server" Text="姓名"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtUserName" runat="server" AutoPostBack="True"
ontextchanged="txtUserName_TextChanged"></asp:TextBox>
<asp:Label ID="errorMsg" runat="server"
Text="Label" CssClass="error" Visible="False"></asp:Label>
</td>
</tr>

<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="密碼"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtPassWord" runat="server"></asp:TextBox>
密碼強度:
<span id="spanPassWord" ></span>
</td>
</tr>

<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="重複輸入密碼"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtPassWord_Second" runat="server"></asp:TextBox>
</td>
</tr>

<tr>
<td>
<asp:Label ID="Label4" runat="server" Text="郵箱"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
</tr>

<tr>
<td>
<asp:Button ID="btnRegister" runat="server" Text="註冊"
onclick="btnRegister_Click" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="LabelErrorMsg" runat="server" Visible="False"></asp:Label>
</td>
</tr>
</table>
</div>
</form>
</body>
<head id="Head1" runat="server">
<style type="text/css">
.error{background:Red;}
</style>
<title>註冊使用者</title>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("#<%=txtPassWord.ClientID %>").blur(function () {
var str = $(this).val();
if (str.length <= 6) {
$("#spanPassWord").text("弱");
}
else {
//含有數字、字母
var check = /\w/;
if (check.test(str)) {
$("#spanPassWord").text("強");
}
else {
$("#spanPassWord").text("中");
}
}

});
$("#<%=form1.ClientID %>").submit(function () {
var pas1 = $("#<%=txtPassWord.ClientID %>").val();
var pas2 = $("#<%=txtPassWord_Second.ClientID %>").val();
if (pas1 != pas2) {
alert("兩次輸入密碼不一致,請重新輸入");
return;
}
var sEmail = $("#<%=txtEmail.ClientID %>").val();
var check = /.+@.+/;
if (!check.test(sEmail)) {
alert("郵箱格式不正確,請重新輸入");
return;
}
});
});</script>
</head>
</html>

Register.apsx.cs複製代碼 代碼如下:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using 登陸註冊.DAL.DataSet1TableAdapters;
using System.Text.RegularExpressions;

namespace 登陸註冊
{
public partial class Register : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void btnRegister_Click(object sender, EventArgs e)
{
//伺服器版測試是否符合要求:郵箱餓壞密碼
if (txtPassWord.Text != txtPassWord_Second.Text)
{
LabelErrorMsg.Text = "密碼不一致!";
LabelErrorMsg.Visible = true;
return;
}
Regex reEmail = new Regex(@".+@.+");
if (!reEmail.IsMatch(txtEmail.Text))
{
LabelErrorMsg.Text = "Email格式不正確!";
LabelErrorMsg.Visible = true;
return;
}
LabelErrorMsg.Visible = false;
T_userInfoTableAdapter adapter = new T_userInfoTableAdapter();
if (adapter.GetDataByUserName(txtUserName.Text).Count >= 1)
{
errorMsg.Visible = true;
errorMsg.Text = "使用者名稱重複,請重新輸入!";
return;
}
long userId=Convert.ToInt64(adapter.InsertUser(txtUserName.Text, txtPassWord.Text,
txtEmail.Text));
//讀取Session登陸資訊
Session["登陸ID"] = userId;
Session["登陸標記"] = true;
//設定可以傳參數的公用跳轉頁面
//作用1:告訴使用者註冊成功,作用2:防止使用者點擊重新整理重複提交資料
Response.Redirect("target.aspx?Msg=註冊成功即將轉向登陸介面&RedirectURL=login.aspx");
}

protected void txtUserName_TextChanged(object sender, EventArgs e)
{
T_userInfoTableAdapter adapter = new T_userInfoTableAdapter();
if (adapter.GetDataByUserName(txtUserName.Text).Count >= 1) {
errorMsg.Visible = true;
errorMsg.Text = "使用者名稱重複,請重新輸入!";
}
else{
errorMsg.Visible = false;
}
}
}
}

其中要用到的Regex:

插入資料記錄: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 Regex驗證

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:產生一個從根開始的路徑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.