ASP.NET数据绑定的记忆碎片

ASP.NET数据绑定的一般情况

1、<%=  C#代码  %>  //调用代码隐藏页面的方法、属性、或者字段

这里一般是调用属性和方法比较多,要注意调用的属性、方法或者字段的作用域,必须是可以在ASPX页面可以访问到的。

代码示例(ASPX):<%=Property%>

在(CS)是: public string Property{   get { return "This is a Property";}  }

属性是这样使用的,方法和字段的使用类似,也是这样实现的。

2、<%#数据绑定表达式%>//是在列表控件里面使用的

使用方式一:<%# Eval("FirstName")%>

使用方式二:<%# DataBinder.Eval(Container.DataItem, "SecondName")%>

下面附上我调试的源码,可以复制过去看看

在ASPX页面:

View Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DataBindEx._Default" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form runat="server">
    <div>
        <%=Property%>
        <br />
        <asp:TextBox ID="TextBox1" Text="This is TextBox of serverClient " runat="server"></asp:TextBox>
        <br />
        <%=Method()%>
        <br />
        <br />
        <asp:Label ID="Label1" runat="server"><%=TextBox1.Text %></asp:Label>
        <br />
        <%=(Property + " " + Method())%>
    </div>
    <div>
        <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="RptAllOnItemDataBound">
            <HeaderTemplate>
                This is Header<br />
            </HeaderTemplate>
            <ItemTemplate>
                FirstName:<%# Eval("FirstName")%>
                SecondName:<%# DataBinder.Eval(Container.DataItem, "SecondName")%>
                FullName:<%# (Container.DataItem as DataBindEx.Person).FullName%>
                <asp:Literal ID="Others" runat="server"></asp:Literal>
                <br />
            </ItemTemplate>
            <FooterTemplate>
                This is footer<br />
            </FooterTemplate>
        </asp:Repeater>
    </div>
    </form>
</body>
</html>

 在CS页面:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.MobileControls;

namespace DataBindEx
{
    public class Person
    {
        public string FirstName
        {
            get;
            set;
        }
        public string SecondName
        {
            get;
            set;
        }
        public string FullName
        {
            get
            {
               return FirstName + SecondName;
            }
        }
    }
    public partial class _Default : System.Web.UI.Page
    {
        
        public string Property
        {
            get
            {
                return "This is a Property";
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string str = TextBox1.Text;
            Person per = new Person();
            per.FirstName= "";
            per.SecondName= "明丰";
            Person per1 = new Person();
            per1.FirstName = "";
            per1.SecondName = "";
            Person per2 = new Person();
            per2.FirstName = "";
            per2.SecondName = "仁峰";
            List<Person> list = new List<Person>();
            list.Add(per);
            list.Add(per1);
            list.Add(per2);
            Repeater1.DataSource = list;
            Repeater1.DataBind();
        }
        protected void RptAllOnItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Person pe = (Person)e.Item.DataItem;
            Literal lit = e.Item.FindControl("Others"as Literal;
            if (pe !=null)
            switch (pe.FirstName)
            {
                case "":
                    lit.Text = "刘喜欢打球";
                    break;
                case "":
                    lit.Text = "林喜欢下棋";
                    break;
                default:
                    lit.Text = "陈喜欢c#";
                    break;
            }
        }
        protected string Method()
        {
            return "This is a Method";
        }
    }
}

我是看了这篇后自己测试一下,原博客是

http://www.cnblogs.com/yangcaogui/archive/2012/03/12/2390065.html

原文地址:https://www.cnblogs.com/lmfeng/p/2396018.html