asp.net大杂烩

当窗体某一区域无法确定是属于哪一个元素时,又想修改此区域,可在设计视图中,点此区域,右键:样式:中修改

WebPartManager控件

webpartManager部件:管理网页上所有的Web控件,功能,事件,可自定义控件

客户端提交server端不同步

CheckBox _CheckedChanged用此事件时,控件属性设置AutoPostBack设为true
DropDownList也是一样

主题皮肤

皮肤是应用到一个控件上的样式信息,主题是皮肤的集合,一系列皮肤就构成了主题,

母版

多个页面,用相同的模版时,可用
使用母版的页有统一的页面搭配如:页头,导航,页脚等等

Repeater控件

他简单,小巧,灵活,只跟数据库打交道
三个主要控件GridView  Datalist Repeater
显示较复杂的数据:GridView
一般复杂的    DataList
简单的      Repeater

Wiard步骤控件

步骤控件如上一步,下一步,完成,中间可可添加控件等,步骤可重排,重写

-----------------------------用户控件_自定义控件区别

--------------------课件

asp.net4个页面变量:
Application全局变量
session会话集变量 用完要释放资源removeall
ViewState页面集变量  视图状态  值 会一直存在 缺点:存在html客户端  代码越大加载越慢
cookio
以上都占资源,不要太多用
asp.net组成
App_code  c#代码
app_data  数据库
web.config  配制文件
global.asax
window控件lables  转成html是span标签
视图拖出浮动不能靠边,双击此视图标题栏
c#调试中用即时窗口,如返回ds时,断点选中ds此行时,在即时窗口中输入ds.table
[0].rows.count直接回车,显示5行
---------------------------------------------
控件:实现功能且能看见
组件:实现功能但不能看见
数据源控件基类:control类
ado.net基类;system.Data
-----------------------------------------------
分析器或编译器在分析或编译页时用@page(<%@ page  %>)设置分析器或编译器的属性
             控件时用@control(<%@ control  %>)设置分析器或编译器属性
request用于客户端发送到服务器端的请求
resqose用于客户端请求,将结果返回在客户端浏览器
request对象的类型为httpRequest
resqose对象类型为httpResqose
server对象类型为httpserverutility
Application对象类型:httpApplicationState
Session对象类型httpSessionState
asp.net会话状态保存方法:
客户端
viewstate  queryString HiddlenFiled  cookie
服务器端
Application  Sessition  DataBase
Web服务器控件基类WebControl
aspx网页基类system.web.ui.page
html服务器控件基类htmlControl
容器控件基类htmlcontainercontrol
自定义用户控件webusercontrol基类usercontrol
------------------------
控件:实现功能且能看见
组件:实现功能但不能看见
数据源控件基类:control类
ado.net基类;system.Data

-----------------------------------------------Page.isPostBack

判断不让回刷方法
1:public void Page_Init(object sender,eventargs e){
在此事件中直接写代码}
2:public void Page_Load(object sender,eventargs e)
{
  if(!isPostBack())
{在此if中写代码
}
-----------------------------------------
Page.IsPostBack==false表示:该页是第一次生成   或理解 为第一次访问页面

  Page.IsPostBack==true表示:该页不是第一次生成,可能是用户点后退   用户点击按钮,导致
提交表单时产生的页面访问。
   
  做这个判断后可以减轻服务器端的负担,避免不必要的重复进行数据帮定  
目的是:1、避免重复到数据库里提取数据。
2、保持状态。
如果是绑定下拉列表框的话,就必须用这种方式绑定。

在第一次访问的时候绑定下拉列表框,用户可以看到下拉列表框里的选项,然后作选择,比如选择
了第三项,然后提交表单,这时我们希望能够得到下拉列表框选定了第三项的状态。

如果不加上 if (!page.ispostback) 的判断的话,那么得到的选项永远都是第一项,因为每次都重
新绑定,并且设置第一项被选中。
------------------
!Page.IsPostBack(){}里的代码是只让网页在首次加载时执行。如有的下拉框,如果你不这样做
的话,你每选一次,网页刷新一次,下拉框重新加载,你以前的选择就不会出现在文本框中了,而
是每次的默认选项
一个B/S结构的页面每一次提交,它都会重新从头到尾执行一次。而C/S结构的程序就不会这样,这是
和C/S结构的程序最大的区别!其实,得不到控件的数据,都是因为这个原因。

if(!IsPostBack)
{
    //这里的代码在页面首次显示时执行,其他情况下不再执行。
}

在IE地址栏里输入地址后显得的页面的IsPostBack肯定是false,第一次加载 点击页面上触发所谓
PostBack的按钮等等时,新返回来的页面的IsPostBack==true.不是第一次加载
--------------------
ispostback是判断页面是否已经发送过请求。
如果是第一次,则返回false,如果不是,则返回true.
所以if(!ispostback)里面的代码只有第一次请求时才会执行,如果再操作页面的其他按钮或者什么
事件时。就不会再执行if(!ispostback)里面的代码了。。 
每个控件本身拥有一个ControlState(可以理解为控件自己的ViewState)用于保存控件本身的状
态,比如控件中的数据等等,这也就是为什么服务器控件在页面刷新后值仍然能留在控件中,而普
通的HTML控件一刷新值就没有了道理

---------------------------------girdview与datalist区别

gridview:表格视图  表格:为行rows["列"]列cols集合
datalist列表视图   list列表为items[datalistitem]项集合

-----------------------------

 

global.asax用于保存应用程序级事件,对象,变量
asp.net应用程序只能有一个globla.asax文件,global.asax文件是可选的,没有global.asax也可运行

 Global.asax是由System.Web.HttpAppliction类派生的
           重写RenderContents方法
用户控件(.ascx)不在工具箱内,在应用程序中使用,不能跨应用程序
自定义控件(.dll)放在工具箱内,可以跨应用程序域
复合控件派生自System.Web.UI.WebControls.CompositeControl类必须实现
System.web.UI.INamingContainer接口
必须重写Control基类的CreateChildControls方法
如何处理几十万条并发数据
用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.
自定义控件基类System.Web.UI.UserControl,不是control/webhcontrol

客户端验证和服务器端验证
客户端验证用js实现,服务器端验证.net语言实现
客户端验证依赖于浏览器实现,服务器端验证没有
客户端验证速度较快,服务器端要访问服务器才能实现
web窗体开发由三个文件组成:.aspx  .aspx.cs  .aspx.resx       .asax为global.asax文件,此文件为可选文件 ,不需必须有
具有自动分页功能的数据绑定控件GridView  FormView
web窗体在浏览器中解释执行,窗体中的脚本和代码可分开也可不分开

framset,只右边显示变化target(目标)="Mainfram"
 项目每天要压缩成一份,以便后期改动,也防有差错
htm前台代码错误,先看最后一个错误提示
asp.net 2.0大部分web服务器控件基类:webcontrol
           少部分如Literal,PlaceHolder,Rep[eater XML 服务器控件基类:control
html服务器控件基类:System.Web.UI.htmlcontrol
使某一控件获取光标,获焦点:this.textbox1.focus();

repater可嵌套使用,
链接可用hapiterlink控件,也可用a herf链接都可传参
换行用写为"<br/>"

数据源控件派生于datasourcecontrol类:datasourcecontrol类派生于control类
类编译后为.dll文件,不能改了
页面运行后ie左下角提示错误,错误行数为id工具栏中,源代码中的行数,不是后台vs2008中htm代码中的行数错误

 Session["ds"]=DbHelperSQL.Query("select * from jobs");
       DataSet ds = (DataSet)Session["ds"];
session:状态变量
文本取值一般为.Text或.value
用户控件中最好不用html控件,因为在主页上可能用到html控件,这样可能会出错

 ===============================获取id或url

当前url
this.Label1.Text = Request.Url.AbsoluteUri;
-----------------方法2
private string GetPath()
    {
        string strPath = "http://" + Request.ServerVariables["HTTP_HOST"] + Request.ServerVariables["PATH_INFO"] + "?" + Request.ServerVariables["QUERY_STRING"];
        if(strPath.EndsWith("?"))
        {
            strPath = strPath.Substring(0, strPath.Length - 1);
        }
        return strPath;
    }
-----------------------------
id
this.Label1.Text = Page.Request.UserHostAddress;
如此的id url dns 电脑名称等 都在Page.Request下
获取浏览器类型
HttpBrowserCapabilities h =Request.Browser;
        this.Label1.Text = h.Browser;

 ========================源中代码自动缩进

切换到源视图中,菜单栏,编辑,高级,设置文档格式
设计视力中工具栏中的控件不能随便拖动,切换到设计视图中,菜单栏,布局,位置,自动定位选项,
定位选项中,将每一项选为绝对定位选项
如放在表格中则选择为静位选项 可和ctrl多选
htm中代码自动缩进,控件要拖动,不要手动写
调试时,选中一个.aspx右键在ie中浏览,不会进.cs中
要f5才行  可设某页为起始页,即从此页运行
菜单栏中:布局:位置:绝对定位时,控件可拖动,相对定位时,控件放在表格内可自动对齐,且不能拖动,出表格

=============================解决方案管理器没有

工具:选项:左下角:
显示所有选项:显示解决方案:总是显示解决方案
===========================html中格式设置,编辑:

设置文档格式快捷键:先ctrl+k 再ctrl+d

============================链接去掉虚线框

去掉图片链接的边框和颜色<img scr="" border="0">
去掉超链接的虚线边框局部控制

<a href="link1.htm" οnfοcus="this.blur()">link1</a>

<a href="link1.htm" οnfοcus="this.close()">link1</a>

<a href="link1.htm" hidefocus="true">link1</a>

<a href="link1.htm" hidefocus="hidefocus">link1</a>
============================TextBox不保存历史记录

<asp:TextBox ID="TextBox2" runat="server" AutoCompleteType="disabled" Style="z-index: 101; left: 303px; position: absolute;
            top: 122px" TextMode="Password"></asp:TextBox>/// AutoCompleteType="disabled"
==========================FrameSet

-----------------------FramSet_aspx中引用位置  

如放在body中不行,放在hdader中
----------------------htm中传参控制权限

login.aspx登录页
.cs//
protected void Button1_Click(object sender, EventArgs e)
    {
     
      DataSet ds=  Db.Query("select * from dbUser where username='"+this.TextBox1.Text+"' and pwd='"+this.TextBox2.Text+"'");
    int row=  ds.Tables[0].Rows.Count;
    string supter = null;
    for (int i = 0; i < row; i++)
    {
        supter = ds.Tables[0].Rows[i]["super"].ToString();
    }
    if (row>0)
    {
        Session["super"] = supter;//参数,值先存在变量中,FrameSet.aspx页面中再调出
        Response.Redirect("FrameSet.aspx?username="+this.TextBox1.Text+"&pwd="+this.TextBox2.Text+"&super="+supter);
    }
    }


frameset.aspx页//
<head runat="server">
    <title>无标题页</title>
   
    <frameset cols="240,*" frameborder="no" border="0" framespacing="0">
  <frame src="Left.aspx" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
  <frame src="" name="mainFrame" id="mainFrame" title="mainFrame" />
</frameset>
   
   
   
   
</head>
left.aspx//frameset中的左边页,
  <table style="width: 107px;" border="0" cellpadding="0" cellspacing="0">

<tr>
<td align="center" background="../images/c.jpg" height="209" valign="top" style="width: 203px">

 <img src="../Images/a.gif"/>
 <%if (Session["super"].ToString() == "1")
   {%>
 <a href="SysUser_right.aspx" target="mainFrame">超级管理员

    </a>

 
 <%} %>
 
   


 </td>
 </tr>

<tr><td style="height: 10px"> <img height="10" src="../images/b.jpg" width="200"  /></td></tr>
 
   </table>
frameset右边显示另一个页
孔羸思想发现:
在左边页中添加web服务器控件如:textbox text="超级管理员",点此链接时不显示链接窗口
但在左边页中写字就能链接,所以只能在htm中传参控件权限,此发现不确定对
=============================文本数据库取出时不换行的问题


.cs中与htm中转换字符不一样,这里转换
方法1
String   neirong2;  
  neirong2=Server.HtmlEncode(neirong.Text);  
  String   zh="";    
  String   tmpstr="";    
  for   (int   i=0;   i<neirong2.Length;i++)    
  {    
  zh=neirong2.Substring(i,1);    
  if   (zh=="   ")   {   zh="&nbsp;";}    
  if   (zh=="/n")   {   zh="<br>";   }    
  if   (zh=="/t")   {   zh="&nbsp;&nbsp;&nbsp;&nbsp;";}    
  tmpstr=tmpstr+zh;   }    
    neirong2=tmpstr;   


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
方法2
///   <summary>  
  ///   HTML   encode,Html   编码  
  ///   用于用户输入时去除一些Html字符  
  ///   </summary>  
  ///   <param   name="str">string</param>  
  ///   <returns></returns>  
  public   static   string   Encode(string   str)  
  {  
  str   =   str.Replace("&","&amp;");  
  str   =   str.Replace("'","''");  
  str   =   str.Replace("/"","&quot;");  
  str   =   str.Replace("   ","&nbsp;");  
  str   =   str.Replace("<","&lt;");  
  str   =   str.Replace(">","&gt;");  
  str   =   str.Replace("/n","<br>");  
  return   str;  
  }  
   
   
  ///   <summary>  
  ///   Html   decode,Html   解码  
  ///   把经过编码的Html   字符解码  
  ///   </summary>  
  ///   <param   name="str">string</param>  
  ///   <returns></returns>  
  public   static   string   Decode(string   str)  
  {  
  str   =   str.Replace("<br>","/n");  
  str   =   str.Replace("&gt;",">");  
  str   =   str.Replace("&lt;","<");  
  str   =   str.Replace("&nbsp;","   ");  
  str   =   str.Replace("&quot;","/"");  
  str   =   str.Replace("&#8220",""");  
  str   =   str.Replace("&#8221",""");  
  str   =   str.Replace("&amp;","&");  
  return   str;  
  } 

也可这样:
存时用textbox
取时用textbox
htm代码中设置textbox:
<asp:TextBox ID="TextBox9" runat="server" Text='<%# Eval("content") %>'  style="overflow:Hidden; background-color:#dedfde;font-size:16px; border:0;" Width="100%" Height="1000px" TextMode="multiLine"></asp:TextBox><br />
   
=================================不能弹出新页

datalist中:html:
<asp:DataList  ID="DataList3" runat="server" OnItemCommand="DataList3_ItemCommand"  DataKeyField="ID" ForeColor="Black">
                <ItemTemplate >
                 <asp:LinkButton ID="LinkButton3"  runat="server" Text='<%# Eval("header") %>' ></asp:LinkButton>
                 </ItemTemplate> 
                </asp:DataList>
.cs
protected void DataList3_ItemCommand(object source, DataListCommandEventArgs e)
    {
       
        string id = this.DataList3.DataKeys[e.Item.ItemIndex].ToString();
        string h = ((HyperLink)this.DataList3.Items[e.Item.ItemIndex].FindControl("HyperLink1")).Text;
      
      Response.Redirect("newInfo.aspx?id=" + id);
}
调用
this.DataList1.DataSource = Db.Query("select top 5 * from dbNewInfo where ID='" +Convert.ToInt32( Session["id"].ToString()) + "' order by issuanceDate desc ").Tables[0];
       //this.DataList1.DataBind();


点击一行,链接到新页,但不能弹出新页,linkButton不能写target属性
弹出新页用HyperLink控件
<asp:DataList  ID="DataList3" runat="server" OnItemCommand="DataList3_ItemCommand"  DataKeyField="ID" ForeColor="Black">
                <ItemTemplate >
                  <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl ='<%# DataBinder.Eval(Container.DataItem,"ID","newInfo.aspx?ID={0}") %>' Text='<%# Eval("header") %>' Target="_blank"></asp:HyperLink>
           
                 </ItemTemplate> 
                </asp:DataList>
.cs中绑定数据库即可,不用在datalist事件中取ID值
调用
 this.DataList1.DataSource = Db.Query("select top 5 * from dbNewInfo where ID='" + Convert.ToInt32(Request.QueryString["ID"].ToString()) + "' order by issuanceDate desc ").Tables[0];
        this.DataList1.DataBind();
=================================表格内的控件.cs中调不出

菜单栏中:布局:位置:绝对定位时,控件可拖动,相对定位时,控件放在表格内可自动对齐,且不能拖
控件设为相对位置
====================================Table控件,动态添加行

Table控件,动态添加行:思想:单元格放入行中,行放入行集合中,行集合放入表中
TableCell c = new TableCell();//单元格
        c.Text = "c";
        TableRow r = new TableRow();//行
        r.Cells.Add(c);
        this.Table1.Rows.Add(r);//表
fileupload控件
protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            try
            {

                FileUpload1.SaveAs("d://uploads//" + FileUpload1.FileName);//取文件路径
                Label1.Text = "file name:" + FileUpload1.PostedFile.FileName + "<br>" + FileUpload1.PostedFile.ContentLength +//文件长度
                    "kb<br>" +
                    "content type:" + FileUpload1.PostedFile.ContentType;//类型

            }
            catch(Exception ex)
            {
                Label1.Text = "ERROR:" + ex.Message.ToString();
            }
        }

    }
上传文件<4m
web.config中控制上传文件<4m
<system.web>
  <!--
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会
            影响性能,因此只在开发过程中将此值
            设置为 true。
        -->
加这句    <httpRuntime maxRequestLength="4096"  executionTimeout="90"></httpRuntime>/>//默认90秒
fileupload控件本身不启动上传,要通过一个按钮事件启动
前台代码可在后台写,后台代码也可在前台写

=====================================html中点代码处时代码跑了位置

vs ,不要点代码下面的滚动条,点代码区右边的滚动条

vs文档格式设置ctrl+e ,d
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值