zoukankan      html  css  js  c++  java
  • .Net培训个人总结笔记35

    学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/01/12/2214013.html

    技巧:
    之前讲过的 WebSite 和 WebApplication 的区别中老师提到,WebSite 中代码被修改后立即生效,不用重启浏览器,而 WebApplication 中代码被修改后则不会立即生效,需要重启浏览器才能生效。之所以会这样,是因为在 WebSite 中 VS 会监测 C# 代码有否被修改,若有则立刻生成解决方案,自动重新编译;而在 WebApplication 中 VS 则不会这样。

    两个小技巧:
    1.用“生成”来代替“重启IE”;
    2.用后面的设置技巧代替“设为起始页”:“右击项目的 属性→Web→当前页面”;

    细节:
    在 aspx 页面中, *.aspx 就是一个模板,而 *.aspx.cs 则是 C# 代码,这种“前 *.aspx 后 *.aspx.cs”就叫做CodeBehind,*.aspx 控制页面的显示样貌,而 *.aspx.cs 控制后台的业务逻辑。

    细节:
    在 *.aspx 模板中是可以使用 C# 代码的,其中“<% 代码内容 %>”表示执行当前的 C# 代码内容,而“<% =代码内容 %>”则表示执行当前的 C# 代码内容,并把返回值填充到当前的位置。

    细节:
    *.aspx 和 *.aspx.cs 不是同属于一个类,因为在 *.aspx 中访问不了在 *.aspx.cs 中的 private 成员,同时 internal 的级别成员也是访问不了。但 protected、protected internal、public 等访问级别都可以。

    CodeBehind 重点:
    *.aspx 页面之所以可以写 C# 代码并且可以调用 *.aspx.cs 中的 C# 代码,是因为在 ASP.NET 中,VS 会为 *.aspx 模板页面中的 C# 代码生成一个类(假设类名为 B),而这个类 B 继承自 *.aspx.cs 文件中的 C# 代码所属的类(假设类名为 A),即 B: A,类 B 中的 C# 代码即 *.aspx 页面中的 C# 代码,而类 A 中的 C# 代码则为 *.aspx.cs 文件中的 C# 代码。
    其实在 *.aspx 模板页面中的顶行已经有相关的提示,即“Inherits="*.aspx.cs 文件中的类的类名"”,这说明了 *.aspx 模板页面的 C# 代码所属的类(即上述的 B 类)是对应的 *.aspx.cs 文件中的类的子类。

    区别:
    服务端控件的 Visible = false 不同于客户端浏览器页面中 Javascript 代码的 style.display='none',两者的效果不一样,前者是直接没有渲染该控件到客户端中,而后者的客户端页面则存在该控件标签,只是没有显示到浏览器页面中而已,右键“查看源文件”还是可以看到被隐藏的控件标签及其内容。

    细节:
    ASP.NET 中的服务器端的 Label 默认情况下会在客户端中被渲染成 html 中的 span 标签,但如果设置了 Label 控件的 AssociatedControlID,把它和某控件关联上,则该 Label 会在客户端中被渲染成 label 标签,而且点击该 label 时,和它关联的控件可以获得焦点。

    细节:
    1. 服务器端的 Literal 控件在客户端中不会被渲染成任何的标签,只是把控件中的字符串内容直接地放到对应的位置中而已。
    2. 另外,如果把 Literal 控件的 Mode 属性设置为 Encode 的话,还可以为该控件中的 Text 属性内容进行自动的 Encode 操作,可以避免 XSS 漏洞攻击。

    细节:
    服务器端的 RadioButton 控件在客户端中被渲染成 type = radio 的 input 标签,在服务器端可以通过该控件的 GroupName 属性来进行分组,该 GroupName 属性对应着客户端浏览器中的 GroupName。


    区别:
    1. 服务端控件中,普通的 Button 在客户端的 html 页面中被渲染成 <input type = "submit" /> 的 input 标签;而 LinkButton 在客户端的 html 页面中被渲染成 <a href = "javascript:_doPostBack('','')">LinkButton</a> 的 a 标签;而 ImageButton 则在客户端中会被渲染成 <input type = "image" /> 的 input 标签。
    2. LinkButton 用右键点击“在新窗口中打开”的话会没有效果,因为标签的链接地址不是一个 URL,而是一段 Javascript 代码。因此也不要用 LinkButton 来实现普通的超链接。

    细节:
    通过 Command、CommandArgument、CommandName 可以实现“让多个 Button 共享一个事件响应函数”的效果。

    细节:
    服务器端的 Panel 控件默认情况下在客户端 html 页面中被渲染成 <div></div> 标签,而如果对 Panel 的 GroupingText 属性设上一个值,则该 Panel 控件在客户端的 html 页面中会被渲染成类似于 WinForm 中的容器控件 GroupBox 的 <fieldset><legend>标题名称</legend></fieldset> 标签,但此时该 <fieldset></fieldset> 标签的外面仍然还有一个 <div> </div> 标签包裹着。

    细节:
    1. 如果设定 HyperLink 控件的 ImageUrl 属性,则会显示图片超链接。
    2. HyperLink 的优势在于会自动将虚拟路径转换为客户端路径。

    区别:
    HyperLink 和 LinkButton 的区别
    1. LinkButton 只是一个“类似于超链接的 Button”,本质上还是一个 Button;而 HyperLink 则纯粹是一个普通的超链接。
    2. HyperLink 是直接打开 NavigateUrl 属性中指定的 Url 地址,没有提交页面的操作,点击控件后服务器端根本不知道客户端有点击控件的操作,所以不会有“PostBack”的行为;而 LinkButton 则会提交页面的表单,因此点击控件后会有“PostBack”的行为,会触发服务端的事件和方法。

    细节:
    1. 服务器端的 FileUpLoad 控件在客户端浏览器中会被渲染成 type = "file" 的 <input /> 标签。
    2. 用 FileUpLoad 控件的 HasFile 属性可以判断用户是否已经选择了要上传的文件。

    安全性:
    为了保障服务器端的安全,尽量不要把用户上传的文件保存到磁盘上。

    经验:
    ASP.NET 中服务端的 Image 和 ImageButton 的区别:
    1. Image 只是一个普通的图片框控件,只负责把 ImageUrl 属性中指定的图片镶嵌到相应的位置上;而 ImageButton 则相当于是一个带图片的按钮,按钮的图片来源于该 ImageButton 的 ImageUrl 属性中指定的地址,点击图片后可以触发客户端的 onclick 事件(即相对于服务端的 OnClientClick 属性)。
    2. 在客户端的浏览器中,Image 被渲染成:<img id="Image1" src="图片路径" />,而 ImageButton 则被渲染成:<input type="image" name="ImageButton1" id="ImageButton1" src="图片路径" />。

    细节:
    母版页中的相对路径问题:
    在母版页中调用的样式表的路径 VS 会自动帮我们转换,而如果母版页中使用了普通的 HTML 控件,由于普通 HTML 控件使用的是相对路径而不是虚拟路径,所以如果这些在母版页中的 HTML 控件通过相对路径引用了外部资源,而且不在同一个路径下的子页面使用了该母版页,可能会出现“找不到资源”的情况。

    细节:
    在 ASP.NET 中,一般实现了 IEnumerable 接口的数据都可以用以下的方式来为控件绑定:
    BulletedList1.DataSource = new int[] { 3, 2, 5, 6, 0, 8 };
    BulletedList1.DataBind(); //必须要加上这句代码,数据才会被绑定到控件中。

    细节:
    不久之前已经说过,在 *.aspx 页面中,如果在服务端 ASP.NET 控件的属性的值中使用 C# 代码(如:<%=Button1.ClientID %>),则会造成服务器端编译器渲染到客户端浏览器上的源文件出现由 Encode 导致的错误,但经测试,“<%#Eval("PicPath")%>”有点例外,例如在服务端 Image 控件中设定属性“ImageUrl = '~/objdatasrc/images/<%#Eval("PicPath")%>'”(这里的 <%#Eval("PicPath")%> 所返回的值为图片文件名,例如:1.jpg)时,会出现上述错误,而如果属性值中不含“~/objdatasrc/images/”等除 C# 代码之外的字符时,则不会出现上述错误,原因暂时不明。

  • 相关阅读:
    How To Build CyanogenMod Android for smartphone
    CentOS安装Code::Blocks
    How to Dual boot Multiple ROMs on Your Android SmartPhone (Upto Five Roms)?
    Audacious——Linux音乐播放器
    How to Dual Boot Multiple ROMs on Your Android Phone
    Everything You Need to Know About Rooting Your Android Phone
    How to Flash a ROM to Your Android Phone
    什么是NANDroid,如何加载NANDroid备份?
    Have you considered compiled a batman-adv.ko for android?
    BATMAN—Better Approach To Mobile Adhoc Networking (B.A.T.M.A.N.)
  • 原文地址:https://www.cnblogs.com/lgjspace/p/2218287.html
Copyright © 2011-2022 走看看