《ASP.Net快速入门》学习笔记2

** 数据绑定语法 ** **

**

1. ASP.NET 声明性数据绑定语法使用 ```

 1
 22.  可以绑定到数据源、页或其他控件的属性、集合、表达式以及从方法调用返回的结果。 
 3
 43.  语法示例 
 5
 6** 简单属性  **
 7
 8| 
 9
10Customer: ```
11# custID 

---|---

** 集合 **

|

Orders:

 1<asp:listbox datasource="```
 2# myArray 
 3```" id="List1" runat="server">  
 4  
 5** 表达式  **
 6
 7| 
 8
 9Contact: ```
10# ( customer.First Name + " " + customer.LastName ) 

** 方法结果 **

|

Outstanding Balance: ```

GetBalance(custID)

 1  
 24.  ASP **Response.Write** ** 与  ** ** DataBind  ** 方法区别 
 3
 4ASP **Response.Write** 快捷方式语法在处理页时计算,而  ASP.NET  数据绑定语法仅在调用  ** DataBind  ** 方法时计算。 
 5
 65.  ** DataBind  ** 的级联 
 7
 8当在父控件上调用  ** DataBind  ** 时,它级联到该控件的所有子控件。 
 9
10例如,  ` DataList1.DataBind()  ` 将因此对  ** DataList  ** 模板中的每一控件调用  ** DataBind  ** 方法。在 **页** 上调用  ** DataBind  ** —  ` Page.DataBind()  ` 或只是  ` DataBind()  ` —  会导致计算页上的所有数据绑定表达式 
11
12** 6.  ** ** DataBinder.Eval 
13
14**
15
16A  .计算后期绑定的数据绑定表达式并且可选择将结果格式化为字符串。 
17    
18    
19    B.```
20# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") 

** C ** ** . ** ** DataBinder.Eval ** 会对标准数据绑定语法带来很明显的性能损失,因为它使用后期绑定反射,注意这一点很重要。使用 ** DataBinder.Eval ** 时需谨慎,尤其是在不需要字符串格式化时。

** 7 ** ** . ** 数据绑定表达式必须计算为 ** String ** 类型的值

自定义控件类的代码

using System;

using System.Web;

using System.Web.UI;

namespace SimpleControlSamples {

public class Simple : Control {

protected override void Render(HtmlTextWriter output) {

output.Write("

欢迎使用控件开发!

");

}

}

}

aspx页引用该自定义控件的代码

** ``` @ Register TagPrefix="SimpleControlSamples" Namespace="SimpleControlSamples" Assembly="SimpleControlSamples"

 1
 2&lt; SimpleControlSamples:Simple id="MyControl" runat=server  /&gt;
 3
 4属性类似具有访问器方法的  “  聪明  ”  字段。应该从控件公开属性而不是公开公共字段,因为属性允许数据隐藏、可以版本化并受可视化设计器的支持。属性具有设置和检索属性的  get/set  访问器方法,并允许在需要时执行附加的程序逻辑。 
 5
 6如果  A  类具有一个类型为  B  类的属性,则  B  的属性(如果有)称为  A  的子属性。下面的示例定义自定义控件  ` SimpleSubProperty  ` ,该控件具有  ` Format  ` 类型的属性。  ` Format  ` 是具有两个基元属性的类  ——  ` Color  ` 和  ` Size  ` ,这两个属性反过来成为  ` SimpleSubProperty  ` 的子属性。 
 7
 8注意  ASP.NET  具有设置子属性的特殊语法。下面的代码示例显示如何以声明方式设置  ` SimpleSubProperty  ` 上的  ` Format.Color  ` 和  ` Format.Size  ` 子属性。  “-”  语法指示子属性。 
 9
10` <simplecontrolsamples:simplesubproperty format-color="red" format-size="3" message="Hello There" runat="server/">
11
12`
13
14每个控件都具有从  ** System.Web.UI.Control  ** 继承的  ** Controls  ** 属性  .  这是表示控件的子控件(如果有)的集合属性 
15    
16    
17    如果控件未用 **ParseChildrenAttribute** 标记,或是标记为 **ParseChildrenAttribute(ChildrenAsProperties = false)** ,则当控件在页上以声明方式使用时,ASP.NET 页框架将应用以下分析逻辑。如果分析器在控件的标记内遇到嵌套控件,它将创建嵌套控件的实例并将它们添加到控件的 **Controls** 属性。标记之间的文本添加为 **LiteralControl** 。任何其他嵌套元素都生成分析器错误。  
18    
19    如:  
20    
21     <simplecontrolsamples:simpleinnercontent id="MyControl" runat="server">
22
23我的消息在控件标记内!!!! 
24
25</simplecontrolsamples:simpleinnercontent>
26    
27    
28    以上正确
29    
30    
31    <simplecontrolsamples:simpleinnercontent id="MyControl" runat="server">
32<input runat="server" type="”text”"/> </simplecontrolsamples:simpleinnercontent>
33
34以上错误  ,因为  <input runat="server" type="”text”"/>是一个控件,标记之间只能添加文本,要添加控件,必须设置属性  ** ParseChildrenAttribute=true  **
35
36在分析  ASP.NET  页时,样式信息被填充到  ** System.Web.UI.HtmlControls.HtmlControl  ** 类上的  ** Style  ** 属性(  ** CssStyleCollection  ** 类型)中。该属性本质上是一个词典,它将控件的样式公开为每个样式属性键值的字符串索引集合。例如,可以使用下面的代码在  ** HtmlInputText  ** 服务器控件上设置并随后检索  ** width  ** 样式属性。 
37
38<script language="C#" runat="server">
39
40void Page_Load(Object sender, EventArgs E) { 
41
42MyText.Style["width"] = "90px"; 
43
44Response.Write(MyText.Style["width"]); 
45
46} 
47
48</script>
49<input id="MyText" runat="server" type="text">
50<script language="VB" runat="server">
51
52Sub Page_Load(Sender As Object, E As EventArgs) 
53
54MyText.Style("width") = "90px" 
55
56Response.Write(MyText.Style("width")) 
57
58End Sub 
59
60</script>
61<input id="MyText" runat="server" type="text">
62<script language="JScript" runat="server"></script></input></input></simplecontrolsamples:simplesubproperty></asp:listbox>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus