Je veux emballer un morceau de logique de rendu HTML dans un contrôle utilisateur. Ensuite, je veux passer un objet produit personnalisé (titre, miniature, id, etc.) à UserControl qu'il peut utiliser quand il rend. Idéalement, je veux l'utiliser dans un répéteur (ou pour une boucle) et passer l'objet produit personnalisé actuel dans l'UC. Chaque exemple que j'ai vu a traversé des chaînes sur la balise UC mais ce n'est pas vraiment ce que je veux faire car cela signifie que j'aurai des références partout où il faut mettre à jour si un nouveau champ a besoin d'être rendu.Passez un objet dans un UserControl dans un répéteur? .Net 1
Des idées?
.Net 1 en utilisant VB.net (pas mon premier choix pour .net donc aller simple)
exemple HTML pour nous allons, ce serait dans la page .ascx:
<div>
<h3><%= myProd.title %></h3>
<img src="<%= myProd.thumbnail %>" />
<p>
<%= myProd.description %>
</p>
</div>
MISE À JOUR:
Ok, donc avec un peu de piratage ici est ce que je suis venu avec, ce ne fonctionne pas bien, quelle est la pièce manquante de ce puzzle?
Créer un UserControl et ajoutez ceci au code derrière:
Public Class ProductRender
Inherits System.Web.UI.UserControl
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
End Sub
Private _product As productItem
Public Property myProd() As productItem
Get
myProd = Me._product
End Get
Set(ByVal Value As productItem)
Me._product = Value
End Set
End Property
End Class
Dans la page UC ascx J'ai simplement le code html ci-dessus.
Dans la page qui utilise l'UC j'ai simplement ajouté ce qui suit pour le test:
...usual ascx header stuff...
<%@ Register TagPrefix="ORC" TagName="productRender" Src="productRender.ascx" %>
<ORC:productRender id="Assetrender1" runat="server" asset="<%# getDummyProduct() %>" />
dans le code derrière je déclare getDummyProduct comme si:
Public Function getDummyProduct() As productItem
getDummyProduct = New productItem("DVD Player", "It plays DVDs!", "some_thumb.jpg", 30)
End Function
Pourtant, dans ma page ASCS je reçois : "Référence d'objet non définie sur une instance d'un objet"
Line 1: <%@ Control Language="vb" AutoEventWireup="false" Codebehind="ProductRender.ascx.vb" Inherits="MyApp.ProductRender" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
Line 2: <h3>
Line 3: <%= myProd.title %>
Line 4: </h3>
Que voulez-vous dire par ".NET 1"? 1,0? 1.1? Faute de frappe? –
.Net Version 1.1 dans VB.net –