ASP.Net de manière Déclarative en Passant la Valeur à partir de la Page de Propriété de Contrôle de l'Utilisateur

J'ai besoin de trouver un moyen de déclarative (pas dans le fichier code-behind) transmettre la valeur d'une propriété dans une ASP.Net page web à un contrôle de l'utilisateur. Voici un exemple simple de ce que je suis en train de faire, mais je ne peux pas le faire fonctionner.
Voici le balisage de la page aspx où je suis en création d'un objet de contrôle de l'utilisateur:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs"  Inherits="_Default" %>
<%@ Register Src="~/MyUserControl.ascx" TagName="MyUserControl" TagPrefix="uc1" %>

<!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 id="form1" runat="server">
    <div>
    <uc1:MyUserControl ID="MyUserControl1" runat="server"
      UserControlProperty = '<%# Bind("PageProperty") %>' />
    </div>
    </form>
</body>
</html>

Voici le code derrière (aspx.cs) de fichiers à partir de la page aspx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page 
{
    public int PageProperty { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        PageProperty = 42;

    }
}

Voici le balisage de l'objet usercontrol (fichier ascx):

<%@ Control Language="C#" AutoEventWireup="true" 
CodeFile="MyUserControl.ascx.cs" Inherits="MyUserControl" %>

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

Et voici le fichier code-behind (ascx.cs) de l'utilisateur contrôle:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class MyUserControl : System.Web.UI.UserControl
{
    public int UserControlProperty { get; set; }


    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox1.Text = UserControlProperty.ToString();
    }
}

Donc, tout ce que je suis en train de faire est de passer la valeur de la PageProperty propriété définie dans la page aspx dans le contrôle de l'utilisateur pour définir c'est UserControlProperty, puis d'afficher cette valeur dans une zone de texte dans le contrôle usercontrol. Quelqu'un peut me dire ce que j'ai fait de mal ici?

qui a travaillé ? 🙂

OriginalL'auteur Russ Clark | 2009-10-13