笔记整理
添加图片
protected void Button1_Click(object sender, EventArgs e)
{
Image1.ImageUrl = "~/images/095153a1p3sw017dia7wze.jpg";
}
fileuplod的使用
第四次课/Example_1/Default9
if(FileUpload1.HasFile)//判断用户是否选择了文件
{
//DateTime.Now.Ticks.ToString();以纳秒为单位
//VirtualPathUtility.ToAbsolute也可以得到文件的跟路径
string dt = DateTime.Now.ToString("yyyyMMddhhmmssfff") + DateTime.Now.Ticks.ToString();
string path = Server.MapPath("~/Upload/"+dt);//获得跟路径
FileUpload1.SaveAs(path + FileUpload1.FileName);//~/Upload/不能直接写在SaveAs里面,因为直接SaveAs中不能得到跟路径
}
第六次课
获取浏览器版本:
protected void btnGet_Click(object sender, EventArgs e)
{
当前的浏览器是:lblBrowser.Text = Request.Browser.Browser;
当前的浏览器版本是:lblVersion.Text = Request.Browser.Version;
当前客户端的IP是:lblIP.Text = Request.UserHostAddress;
当前客户端的机器名是:lblName.Text = Request.UserHostName;
}
panel的使用:
1+1=?
<asp:Button ID="Button1" runat="server" Text="点击查看答案" onclick="Button1_Click" />
<asp:Panel ID="Panel1" runat="server" Visible="false">
1+1=2
</asp:Panel>
protected void Button1_Click(object sender, EventArgs e)
{
Panel1.Visible=true;
}
第七次课/Example_1
Server.Execute() 方法和 Server.Transfer() 方法 区别
Server.Execute():执行后跳过当前执行后面的代码
Server.Transfer():执行后不执行后面的代码
使用server.HtmlEncode()得到html纯代码
Response.Write(Server.HtmlEncode("<span style='color:red;'>红色的字</span>"));
使用server.HtmlEncode()的时候不能用地址符号
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("~/showgoods.aspx");
Response.Redirect(Server.UrlEncode("showgoods.aspx"));
}
Server.Mappath()得到文件的物理路径
//显示 ,Upload文件夹在服务器上的绝对路径
Response.Write( Server.MapPath("~/Upload/") );
第七次课/Example_2
Cookie:在客户端上存储的一点点信息,该信息由服务器端发送过来,要求客户端存放
Cookie的作用范围在整个网站都有效
Session["uname"] = txtName.Text; 页面一
lblName.Text=Session["uname"].ToString(); 页面二
使用Cookie一周之内记住我
protected void btnLogin_Click(object sender, EventArgs e)
{
if (txtName.Text == "sanmao" && txtPWD.Text == "123456")
{
//验证用户名和密码成功,就可以登录入主页
HttpCookie cookie = new HttpCookie("nikename", txtName.Text);
if (chkCheckIN.Checked)
{
//要在一周之内可重复登录
cookie.Expires = DateTime.Now.AddDays(7);
}
Response.Cookies.Add(cookie);
//跳转到首页
Response.Redirect("~/Default.aspx");
}
}
第七次课/Example_2/Login.aspx不明白
第八次课
global.asax
application记录当前在线人数
六大对象
Response对象用语输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个URL或向浏览器输出Cookie文件。
Request对象主要是让服务器取得客户端浏览器的一些数据,包括从HTML表单用Post或者GET方法传递的参数、Cookie和用户认证。因为Request对象是Page对象的成员之一,所以在程序中不需要做任何的声明即可直接使用。
Server对象提供对服务器上的方法和属性进行的访问 .其类名称是HttpServerUtility.
Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Application:应用程序级别的共享变量,优点是应用程序一开启该站点都能访问此变量。缺点:所有对此进行写入操作要加锁,由此共享变量锁带来的内存开销只有此应用程序关闭才能结束。
Session:维护用户个人的状态信息,优点:个人所从事活动,如登录信息,购物车信息等较安全而且又服务器维护较稳定。缺点:维持http连接的sessionID仍然有缺陷,同时为每个用户维护状态信息,服务器内存开销很大。
Cookie:优点是将状态信息维护在客户端的一个文本文件,不需要耗用服务器的内存,是目前各大网站主要采用的方式。缺点:由于其将状态信息存贮在客户端,很可能由别人破解此文件而获得此人的个人隐私和机密信息。其受限大小为4K.
第16次课
formview的使用
formview编辑状态上使用fileuplod上传图片
第17课
repeater的使用
<a href='<%#"WebForm3.aspx?cid="+Eval("C_ID").ToString() %>'><%#Eval("C_Name") %></a>
注意路径的写法
第18次课
datalist的使用(不熟悉)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
角色分配和权限管理
windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.
Forms验证:用Cookie来保存用户凭证,并将未经身份验证的用户重定向到自定义的登录页.
Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务.
ASPNET(下学期)
第2次课
母版的使用(DropDownList选择母版)未练习
第3次课
Example_1
(SiteMapPath)站点地图的使用
Example_2
外观文件.skin,标头引用<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Theme="Green" %>
Example_3
外观文件.skin 代码部分与Example_1相似
第五次课/Example_3
web.config的使用
连接数据库,动态的还没写
第六次课
加密算法
Example_1
txtCode.Text = FormsAuthentication.HashPasswordForStoringInConfigFile(txtValue.Text,System.Web.Configuration.FormsAuthPasswordFormat.MD5.ToString());
Example_2
//把界面上输入的密码经过MD5计算
string userpwd = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPwd.Text, "MD5");
Example_3
location节点设置全局可以访问的页面
credentials passwordFormat="MD5" 设置密码格式为MD5
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Forms">
<forms defaultUrl="Default.aspx" loginUrl="Login.aspx" path="/" name=".ASPNETAUTH" protection="All" timeout="5">
<credentials passwordFormat="MD5">
<user name="三毛" password="202CB962AC59075B964B07152D234B70"/>
<user name="四毛" password="81DC9BDB52D04DC20036DBD8313ED055"/>
<user name="小毛" password="827CCB0EEA8A706C4C34A16891F84E7B"/>
<user name="毛毛" password="E10ADC3949BA59ABBE56E057F20F883E"/>
</credentials>
</forms>
</authentication>
<authorization>
<deny users="?,三毛" />
</authorization>
</system.web>
<location path="UserManager/GetPwd.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
</configuration>
第七次课
web.config结合aspnetdb使用
aspnetdb开启方式:
打开SDK 命令提示(所有程序->Microsoft Visual Studio 2008->Visual Studio Tools->Visual Studio 2008 命令提示),输入aspnet_regsql。
web.config与machine.config位置
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config
页面一:
System.Web.Security.MembershipCreateStatus mcs ;
Membership.CreateUser(txtName.Text, txtPwd1.Text, txtEmail.Text,txtQ.Text,txtA.Text,true,out mcs);
页面二:
if (Membership.ValidateUser(txtName.Text, txtPwd.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtName.Text, true);
}
membership中属性的含义
name:数据提供程序的名称,由于我们是从machine.config复制过来的,所以必须改名,防止重名
type:数据提供程序类型,如果使用的是MSSQL数据库,则保持不变即可,如果使用的是Oracle等其他数据库,则必须自己创建一个类来继承MembershipProvider抽象基类,重写里边的所有抽象方法,然后把类型写在这里即可。
connectionStringName:该属性必须指定在<connectionStrings>节点中,一个连接字符串的名字。
applicationName:应用程序名称,membership允许多个应用程序共同使用一个数据库来管理自己的用户、角色信息,各应用程序只需配置不同的applicationName即可,当然,如果想要多个应用程序使用同一份用户角色信息,只需设置一样的applicationName即可。
requiresUniqueEmail:顾名思义,用户注册时,是否需要提供未注册过的邮箱。
passwordFormat:密码存储格式,密码保存在数据库中的格式,最常用的有Clear(不加密)和Hashed(使用SHA1算法加密)
minRequiredPasswordLength:最小密码长度。
minRequiredNonalphanumericCharacters:指定有效密码中必须包含的特殊字符的最小数量,就是说不是字母也不是数字的字符的数量,比如+-*/,.什么的,增加密码强度
常见问题
找不到存储过程 'dbo.aspnet_CheckSchemaVersion'。
解决:执行ConfigSSE.exe重新安装没有被安装的数据库。
打开目录C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,执行aspnet_regsql.exe,输入数据库链接参数,选择数据库
如果希望文件夹能全局访问,则要设置文件夹权限
<location path="img">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
第八次课
将gridview中的用户添加角色以及文件夹内外webconfig配置
protected void btnAdd_Click(object sender, EventArgs e)
{
//选中的角色是:
string role = ddlRoles.SelectedValue;
/*Response.Write(role);*/
//读出所有员工
//定义一个集合存放所有被勾选 了的用户名
List<string> users = new List<string>();
foreach (GridViewRow row in gvUsers.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox cb = row.Cells[0].FindControl("CheckBox1") as CheckBox;
if (cb.Checked)
{
//得到选中的这个用户名
string user = row.Cells[1].Text;
users.Add(user);
}
}
}
//把选择的这一个集合的用户添加到某个角色:
foreach (string t in users)
{
//每一个t就是一个用户名
Roles.AddUserToRole(t,role);
}/**/
Response.Write("AddUsersToRole,OK");
}
}
第9次课
ASTNET中的登录控件
第10次课
缓存
页面缓存,在页面最上方加上<%@ OutputCache Duration="60" VaryByParam="none"%>
aspx.cs 中 page_Load方法中加入断点调试,60秒内不会进入aspx.cs页面
即使在数据库中添加了数据,刷新后60秒内也不会发生变化
VaryByParam="none"不给参数设置缓存,当VaryByParam="id"的时候根据不同的id会有不同的缓存
如果有多个参数VaryByParam="id;num
VaryByParam="*"表示只要参数变了就换一个缓存
sqldatasourse中缓存数据用EnableViewState缓存时间用CacheDuraton
第一个用户查看页面的时候生成这个页面,第二个人看第一个人生成页面的缓存
这样可以大大降低数据库的消耗减小数据库压力,默认存在iis内存里面,缓存有失效问题
缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个手段一样。asp.net缓存主要分为:页面缓存三种类型。
网站调优主要用缓存
数据库调优主要用索引
缓存控件Substitution
得到webconfig中的连接字符串:
System.Configuration.ConfigurationManager.ConnectionStrings["DVDConnectionString"].ConnectionString;
ASP.NET缓存主要分为:页面缓存,数据源缓存(eg:SqlDataSourse),数据缓存。
.NET中有三种可由Web Form使用的缓存:
·页面输出缓存 它缓存请求的整个页面。
·页面片断缓存 它缓存请求页面中的自定义用户控件。
·页面数据缓存 它以编程方式缓存页面中的对象或数据。
第11次课
XML的简单使用
第12次课
个性化
第13次课
web服务
http://www.educity.cn/help/ASP/201006111451361689.htm
aspnet中的身份验证有哪些?
window身份验证
Form验证
集成验证
ViewState作用:为了保存上一次的动态信息
只展示,不需要交互,不需要postback的可以禁用viewstate
增删改查的时候不需要禁用
方式:1.页面整体禁用viewstate,在控件顶部page中EnableViewSate="False"
2.指定控件禁用viewstate,在控件上EanbleViewState="False"
页面禁用ViewState以后并没有完全去掉ViewState,只要ViewState不是很大就可以了,把页面中runat=server的form去掉可以完全去掉viewstate。如果buttom等服务端控件没有放到runat=server的form找那个,那么则是不可用的。
改进网站性能的重要手段用缓存,改进数据库性能则用索引。
aspnet缓存主要分为:页面缓存、数据源缓存、数据缓存这三钟主要类型。
页面缓存
<%@OutputCache Duration="20" VaryByParam="none"%>
VaryByParam=none表示不带参数 呆多个参数用分号分割
ObjectDataSourse等数据源控件也可以设置缓存 EnableCaching等于true就可以了设置cacheDuration可以设置缓存时间
<%Response.Write(DateTime.Now); %><br />
<%=DateTime.Now %>
以上两行代码运行后的效果是一样的
封装
1、避免外界直接可以修改类的内部信息,符合面向对象的封装原则
2、get和set访问器,可以实现完整的检查机制,例如当某个字段为空时,做一些特殊的处理,或是在对字段赋值时,执行一些检查等。
如果直接公开字段,你无法控制使用者,给字段赋一个可以令程序崩溃的非法值,而用set,你可以检查value是否符合要求。
Appliction:网站第一次运行创建,全站所有页面可访问
Session: 当用户登陆时创建,全站所有页面可访问,但用户下线后消失
ViewState:当前面面可访问,处理客户端,跳转到别的页面不可见
多态
有一个飞的基类:
class FlyBase
{
//有个飞的方法
public virtual void Fly()
{
console.write("我只是告诉你我能飞,但我不告诉你怎么飞,实现我,加上你飞的方法你就能飞");
}
}
鸟类:
class Bird:FlyBase
{
public override void Fly()
{
console.write("拍拍翅膀就能飞")
}
}
超人类:
class SuperMan:FlyBase
{
public override void Fly()
{
console.write("握紧拳头,一跳就可以飞")
}
}
一天 ,鸟儿跟超人在天上相遇了 ,它对超人说 我跟你都能飞,但飞的技能不一样,对于FlyBase来说 我们是一体的都能飞;所以可以把我们都叫做FlyBase
FlyBase bird =new Bird();鸟儿
FlyBase superMan= new SuperMan();超人
鸟儿说: 我飞是用我的技能才可以 所以 bird.Fly() 要调用Bird类的Fly方法
超人说: 我飞也要用我的方法才可以 所以 superMan.Fly() 调用的是SuperMan的Fly方法.
这就是多态 都可以转化为基类对象 但调用的却是子类的方法 注意基类方法用virtual修饰
委托
其实你双击产生的代码就是和委托来绑定带一起的啊
缓存
互联网优化的重要手段

浙公网安备 33010602011771号