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?
OriginalL'auteur Russ Clark | 2009-10-13
Vous devez vous connecter pour publier un commentaire.
essayer
ou envisager de lecture: http://support.microsoft.com/kb/307860#1b
il y a une chose telle que la Page.DataBind() et de Contrôle.DataBind(). Je ne suis pas sûr si vous devez appeler explicitement, mais cela pourrait être le cas...
si vous voulez toujours votre cas, vous pouvez essayer de le faire par le biais de la chaîne:
il fonctionne parfaitement.
aussi, puisque vous disposez d'un back-end dans tous les cas, vous pouvez simplement déclarer définition similaire dans le code-behind... MyUserControl1.UserControlProperty = 124
OriginalL'auteur 0100110010101
Je vous recommande de prendre un coup d'oeil à cet article.
Il vous montre comment créer votre propre ExpressionBuilder pour analyser le C# n'importe où dans votre balisage sans avoir à DataBind ou de sauter à travers toutes les autres cercles.
OriginalL'auteur Chris Shouts