Asp.net 13题
前记:把ASP.NET上课的说的13题目整理了一下,只是自己复习的总节,不是最后的考试的题目,请注意,大家看下是否正确吧,源码+本文Word版(18日更新第11题)群中的那份杨丽美整理的asp.net期末复习总结DOC
Asp.net 13题
                                              --ly整理于
1.   服务器瑞添加代码的三种方式P91
答:1>混合代码<%%>
2>内联代码<script></script>
3>隐藏代码
2.   什么是组件,组件是由哪个项目模板创建,为什么创建?P50
答:组件是编译成DLL文件的类.是由”类库”这个项目模板创建的,组件可以被不同的应用程序共享.
3.   绑定DataGrid或DropDownList控件(选择表中的一例)详细见” DropDownList.aspx”
答:
前提:在数据库中有一张表为”System_Dept”其中有一例为”DeptName”,页面上还有一个DropDownList ” DDLDept”(因为要边连数据库.代码就不实现了)
1>绑定DropDwonList控件
主要代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
//页面初始化时绑定数据
string
CnnString=System.Configuration.ConfigurationSettings.AppSettings["DBConnectionString"];
SqlConnection Connection = new SqlConnection(CnnString);
Connection.Open();
string cmdStr="select DeptName from System_Dept";
SqlCommand cmd=new SqlCommand(cmdStr,Connection);
SqlDataReader dr=cmd.ExecuteReader();
DDLDept.DataSource=dr;
DDLDept.DataTextField="DeptName";
DDLDept.DataValueField="DeptName";
DDLDept.DataBind();
dr.Close();
}
}
2>绑定到DataGrid控件
            string strConStr="";//这里写连接字符串
              string selectString = "Select * from System_Dep";
              DataSet ds = new DataSet();
              SqlConnection con = new SqlConnection(strConStr);
              SqlDataAdapter da = new SqlDataAdapter(selectString,con);
              da.Fill(ds);
              this.DataGrid1.DataSource = ds;
DataGrid1.DataBind();
4. 调用xml WEB Service协议有哪些?代理和xml Web Service通常使用什么协议?要公开web方法应该给方法添加什么属性?
答:
1>HTTP,GET,Post,SOAP
2>SOAP
3>[WebMethod]
5.   DataSet 数据写到xml里,xml文档填入Dataset
答:
1> 先由xml文件转dataset,详细代码见源码
 #region GetDataSetByXml
         /// <summary>
         /// 读取xml直接返回DataSet
         /// </summary>
         /// <param name="strXmlPath">xml文件相对路径</param>
         /// <returns></returns>
         public static DataSet GetDataSetByXml(string strXmlPath)
         {
              try
              {
                   DataSet ds = new DataSet();
                   ds.ReadXml(GetXmlFullPath(strXmlPath));////读取XML到DataSet
                   if(ds.Tables.Count > 0)
                   {
                       return ds;
                   }
                   return null;
              }
              catch(Exception expInGetDataSetByXml)
              {
                   string str = expInGetDataSetByXml.ToString();
                   return null;
              }
         }
         #endregion
         /// <summary>
         /// 返回完整路径
         /// </summary>
         /// <param name="strPath">Xml的路径</param>
         /// <returns></returns>
         public static string GetXmlFullPath(string strPath)
         {        
              if(strPath.IndexOf(":") > 0)////如果路径中含有:符号,则认定为传入的是完整路径 
              {
                   return strPath;
              }
              else
              {
                   return System.Web.HttpContext.Current.Server.MapPath(strPath);////返回完整路径
              }
         }
2> 由DataSet生成一个xml文件,详细代码见源码
/// <summary>
         /// 将一个dataset写入一个xml文件
         /// </summary>
         /// <param name="thisDataSet">要写入dataset的xml文件</param>
         /// <param name="filename">xml的文件名</param>
         /// <param name="fileAccess">写入xml的的写入方式</param>
         public  void WriteXmlToFile(DataSet thisDataSet,string filename,System.IO.FileMode fileAccess) 
         {
              System.IO.FileStream myFileStream;
              try
              {
                   if (thisDataSet == null) { return; }
                   // Create a file name to write to.
                   // Create the FileStream to write with.
                   myFileStream = new System.IO.FileStream
                       (filename,fileAccess);
                   // Create an XmlTextWriter with the fileStream.
                   System.Xml.XmlTextWriter myXmlWriter = 
                       new System.Xml.XmlTextWriter(myFileStream, System.Text.Encoding.Unicode);
                   // Write to the file with the WriteXml method.
                   thisDataSet.WriteXml(myXmlWriter);   
                   myXmlWriter.Close();
              }
              catch(System.Exception e)
              {
                   throw new System.IO.IOException("在将dataset写入xml文件出现异常,请检查");
              }
         }
6.   创建Cookies文件,期限P416  第10题
(把过期时间设成15天070118日修改)
答:
1>写Cookies,见代码” WriteCookies.aspx”(写Cookie)和读Cookie” ReadCookies.aspx”,下面只写出写Cookie的代码
              HttpCookie myCookie = new HttpCookie("MyTestCookie");
              DateTime now = DateTime.Now;
              //设置cookie的值
              myCookie.Values["userName"]="Jack";
              myCookie.Values["phone"]="123456";
              myCookie.Values["zipcode"]="10001";
              myCookie.Values["Email"]="Jack@hotmail.com";
//设置Cookies过期的期限,这里是15天
              myCookie.Expires = now.AddDays(15);
              // 加入 cookie.
              Response.Cookies.Add(myCookie);
7.   创建两表之前的关系,详细代码见” DataRelationShip.aspx”
答:
         /// <summary>
         /// 在一个dataSet中创建两个表,里面有表关系
         /// </summary>
         private void DemonstrateReadWriteXMLDocumentWithStreamReader()
         {
              //创建第一章表,主表,有两例,id(主键),item
              DataSet OriginalDataSet = new DataSet("myDataSet");
              OriginalDataSet.Namespace= "NetFrameWork";
              DataTable myTable = new DataTable("myTable");
              
              DataColumn c1 = new DataColumn("id", Type.GetType("System.Int32"));
              c1.AutoIncrement= true;
              DataColumn c2 = new DataColumn("item");
              myTable.Columns.Add(c1);
              myTable.Columns.Add(c2);
              OriginalDataSet.Tables.Add(myTable);
              //加入行
              DataRow newRow;
              for(int i = 0; i < 10; i++)
              {
                   newRow = myTable.NewRow();
                   newRow["item"]= "item " + i;
                   myTable.Rows.Add(newRow);
              } 
              //创建第二个表,有三例,有名字,地址,注释
              DataTable tbDetails = new DataTable("tbDetails");//第一张表的详细信息
              DataColumn cId = new DataColumn("id", Type.GetType("System.Int32"));
              DataColumn cName = new DataColumn("strName",Type.GetType("System.String"));
              DataColumn cAdress = new DataColumn("strAdress",Type.GetType("System.String"));
              DataColumn cRemark = new DataColumn("strRemark",Type.GetType("System.String"));
              tbDetails.Columns.Add(cId);
              tbDetails.Columns.Add(cName);
              tbDetails.Columns.Add(cAdress);
              tbDetails.Columns.Add(cRemark);
              OriginalDataSet.Tables.Add(tbDetails);
              OriginalDataSet.AcceptChanges();
              //给两张表做一个DataRelation
              DataColumn parentCol;
              DataColumn childCol;
              parentCol = OriginalDataSet.Tables["myTable"].Columns["id"];
              childCol = OriginalDataSet.Tables["tbDetails"].Columns["id"];
              //创建DataRelation.
              DataRelation relCustOrder;
              relCustOrder = new DataRelation("CustomersOrders", parentCol, childCol);
              //把DataRelation加入DataSet
              OriginalDataSet.Relations.Add(relCustOrder);   
}// DemonstrateReadWriteXMLDocumentWithStreamReader
8.   pageLayout属性的两个选项
答:
pageLayout 属性设置当前 HTML 文档的元素定位首选项。可用于该属性的值有:
- GridLayout 绝对定位属性插入到添加的元素中并在移动的元素中更新。可以在整个“设计”视图表面上拖动元素。可以使用定位网格和“网格线对齐”。
- FlowLayout 元素不带绝对定位属性添加。Web 浏览器按元素在页上出现的顺序从上到下排列元素。不能在“设计”视图表面上拖动元素或者使用定位网格。
9.   哪些是部署asp.net程序必要的文件P438
答:1>\bin目录下以及里面的DLL文件
2>所有的Web窗体,用户控件和XML Web Service文件(.aspx,.ascx.asmx)
3>配置文件,包括Web.config和Global.asax
4>本目录中的所有附加支持文件(例如XML文件)
10. Page类的IsPostBack属性与IsValid属性
答:Page类的IsPostBack属性
获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。属性值:如果是为响应客户端回发而加载该页,则为 true;否则为 false。
Page的IsValid属性属性值:获取一个值,该值指示页验证是否成功。如果页验证成功,则为 true;否则为 false。
备注: 若要使该属性返回 true,Page.Validators 属性中的所有验证服务器控件必须都验证成功。只有在已调用 Page.Validate 方法,或已在开始窗体处理的 ASP.NET 服务器控件的 OnServerClick 处理程序中将 CausesValidation 属性设置为 true 后才可以选中该属性。
11. 统计在线人数要在Globle.cs里添加什么代码
(于070118修改,在写Application时加入了是否为空的判断
Globle.cs
……..
     protected void Session_Start(Object sender, EventArgs e)
          {
              
                   
                   if(null==Application["count"])
                       Application["count"] = 1;
                   else
                   {
                            Application.Lock();
                            Application["count"]=((int)Application["count"])+1;
                            Application.UnLock();
                   }
              
         }
……
         protected void Session_End(Object sender, EventArgs e)
         {
              
              
                   
                   if(null==Application["count"])
                       Application["count"] = 0;
                   else
                   {
                            Application.Lock();
                            Application["count"]=((int)Application["count"])-1;
                            Application.UnLock();
                   }
              
}
12. 比较DataSet与DataReader
答:
DataSet与DataReader
当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader。
要通过应用程序执行以下操作,就要使用DataSet:
r 在结果的多个离散表之间进行导航。
r 操作来自多个数据源(例如,来自多个数据库、一个XML文件和一个电子表格的混合数据)的数据。
r 在各层之间交换数据或使用XML Web服务。与DataReader不同的是,DataSet能传递给远程客户端。
r 重用同样的记录集合,以便通过缓存获得性能改善(例如排序、搜索或筛选数据)。
r 每条记录都需要执行大量处理。对使用DataReader返回的每一行进行扩展处理会延长服务于DataReader的连接的必要时间,这影响了性能。
r 使用XML操作对数据进行操作,例如可扩展样式表语言转换(XSLT转换)或XPath查询。
对于下列情况,要在应用程序中使用DataReader:
r 不需要缓存数据。
r 要处理的结果集太大,内存中放不下。
r 一旦需要以仅向前、只读方式快速访问数据。
注填充DataSet时,DataAdapter使用DataReader。因此,使用DataAdapter取代DataSet提升的性能表现为节省了DataSet占用内存和填充DataSet需要的循环。一般来说,此性能提升只是象征性的,因此,设计决策应以所需功能为基础。
13. 在Web.config配置跟踪的几个属性
在Web.config文件中
<configuration>
  <system.web>
    <trace
      enabled="true"
      traceMode="SortByCategory"
      requestLimit="40"
      pageOutput="false"
      localOnly="true"
    />
  </system.web>
</configuration>
| 值 | 说明 | 
| enabled | 设置为 true | false,指示是否为应用程序启用跟踪(默认为 false) | 
| pageOutput | 设置为 true | false, 指示跟踪信息是呈现在每页的最后,还是仅能通过 trace.axd 实用工具访问(默认为 false) | 
| requestLimit | 存储在服务器上的跟踪请求的数目(默认为 10) | 
| traceMode | 设置为 SortByTime | SortByCategory,指示跟踪消息的显示顺序(默认为 SortByTime) | 
| localOnly | 设置为 true | false,指示是为本地主机用户还是为所有用户启用跟踪(默认为 true) | 
参考文献
1.   MSDN
2.   <面向.NET的WEB应用程序设计>
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号