IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/VB.NET

logo
Sommaire > Les webforms > Formulaires et code-behind
        Ma dropdownlist est bien remplie, mais quand je sélectionne un item, c'est toujours la première valeur de la liste qui est retournée
        Comment ajouter dynamiquement des contrôles à une page ?
        Comment créer dynamiquement des métas tags ?
        Comment capturer le clic d'un bouton créé dynamiquement ?
        Comment vérifier la validité d'une adresse ip dans un TextBox?
        Comment empêcher un RequiredFieldValidator de fonctionner lors du clic sur un bouton?
        Pourquoi ai-je une erreur injection script?
        Comment lire un TextBox ligne par ligne?
        La propriété SelectedValue d'une DropDownList me renvoie Nothing, pourquoi?
        Comment modifier le font-name d'un label en code behind?
        Comment ajouter d'autres éléments que ceux d'une liste ?
        Lorsque j'agis sur les attributs d'un checkbox, c'est sur le span associé qu'est répercutée mon action
        Comment filtrer et masquer des éléments d'un repeater ?
        Comment passer des valeurs d'une page à une autre ... PostbackUrl, CrossPostBack et Server.Transfer
        Pourquoi je perds la valeur de mon contrôle lors d'un postback ?
        Comment savoir quel contrôle à déclenché le postback ?
        Comment maintenir le scroll après un postback ?
        Comment poster automatiquement la page en javascript ?
        Comment simuler un click de bouton pour poster une page ?
        Comment utiliser une application Silverlight dans une page ASP.NET ?
        Comment faire communiquer mon application Silverlight avec ma page ASP.NET ?
        6.5.1. Dropdownlist (5)
                Comment insérer un élément dans une DropDownList à un emplacement donné?
                J'ai déclaré l'attribut OnChange sur ma DropDownList mais rien ne se passe lors d'un changement de valeur. Pourquoi?
                Parfois ma dropdownlist ne lève pas l'événement OnSelectedIndexChanged ou OnTextChanged, même si AutoPostBack='true', que faire ?
                Comment lever l'événement SelectedIndexChanged pour des DropDownList dans un Repeater lorsque le Viewstate est à false ?
                Comment faire pour que ma dropdownlist ne cause un postback que sous certaines conditions ?
        6.5.2. Validators (15)
                Qu'est-ce qu'un validator ?
                Peut-on se passer de la validation coté serveur et n'utiliser que la validation coté client ?
                A quel moment intervient la validation dans le cycle de vie d'une page ?
                Comment afficher un message d'erreur dans un validateur ?
                Quels sont les contrôles serveur que l'on peut valider ?
                Comment vérifier qu'une page est valide coté serveur ?
                Qu'est-ce qu'un groupe de validation ?
                Comment valider un RadioButton ?
                6.5.2.1. RequiredFieldValidator (1)
                        A quoi sert le RequiredFieldValidator ?
                6.5.2.2. RangeValidator (1)
                        A quoi sert le RangeValidator ?
                6.5.2.3. CompareValidator (1)
                        A quoi sert le CompareValidator ?
                6.5.2.4. RegularExpressionValidator (1)
                        A quoi sert le RegularExpressionValidator ?
                6.5.2.5. CustomValidator (2)
                        A quoi sert le CustomValidator ?
                        Comment passer des paramètres à la fonction de validation coté client ?
                6.5.2.6. ValidationSummary (1)
                        A quoi sert le ValidationSummary ?



Ma dropdownlist est bien remplie, mais quand je sélectionne un item, c'est toujours la première valeur de la liste qui est retournée
auteur : David Pedehourcq
Ce problème est trés récurent. Dans 99% des cas le problème vient du postback : Si vous remplissez votre dropdownlist dans le "Page_Load" de votre page, le code correct est :

					Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
					If not Page.IsPostBack Then
					'code pour remplir la dropdownlist
					End If
					End Sub
				
L'érreur fréquement comise est d'oublier le "If not page.IsPostBack then" quand vous sélectionnez un objet de la dropdownlist, la page se recharge en fesant un postback, donc repasse par le "Page_Load et reinitialise votre dropdownlist. On spécifie donc qu'il ne faut pas reinitialiser la dropdownlist en cas de PostBack et on récupèrera ainsi la valeur sélectionnée.


Comment ajouter dynamiquement des contrôles à une page ?
auteur : David Pedehourcq
Afin de voir comment on ajoute dynamiquement un webcontrol à une page, nous allons prendre un exemple simple : ajouter un label à une page aspx.

Dans la page aspx, on ajoute un PlaceHolder :

					<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
				
dans le code-behind

					Protected WithEvents PlaceHolder1 As PlaceHolder
					Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
					Dim monlabel As New Label
					PlaceHolder1.controls.add(monlabel)
					End Sub
				
Vous avez là le code minimal pour ajouter un contrôle dynamiquement à une page aspx. Vous pouvez ensuite jouer sur les différentes propriétés et méthodes du webcontrol pour l'initialiser comme vous souhaitez.


Comment créer dynamiquement des métas tags ?
auteur : David Pedehourcq
Nous allons voir dans cet exemple qu'il est trés facile de créer dynamiquement des métas tags en ASP.NET dans le head de la page aspx :

					<meta http-equiv="Content-Language" id="languagePage" runat="server" />

					<meta name="Author" id="auteurPage" runat="server" />
					<meta name="Classification" id="classificationPage" runat="server" />
					<meta name="Description" id="descriptionPage" runat="server" />
					<meta name="keywords" id="keywordsPage" runat="server" />
				
dans le code-behind on déclare :

					Protected languagePage As HtmlGenericControl
					Protected auteurPage As HtmlGenericControl
					Protected classificationPage As HtmlGenericControl
					Protected descriptionPage As HtmlGenericControl
					Protected keywordsPage As HtmlGenericControl
				
ensuite pour donner des valeurs aux métas tags :


					languagePage.Attributes("content") = "fr"
					auteurPage.Attributes("content") = "neo.51"
					classificationPage.Attributes("content") = "developpement"
					descriptionPage.Attributes("content") = "FAQ ASP.NET"
					keywordsPage.InnerText = "asp.net, vb.net, FAQ"
				

Comment capturer le clic d'un bouton créé dynamiquement ?
auteur : Déclic
Dans la procédure de création du bouton on ajoute :
AddHandler Bbouton.Click, AddressOf MesBoutons_Click


ensuite :

					Sub MesBoutons_Click(ByVal sender As Object, ByVal e As System.EventArgs)
					'Récupération du bouton ayant déclenché l'événement
					Dim Btn As Button
					Btn = Ctype(sender,Button)
					'Traitement
					...
					End Sub
				


ATTENTION : Lors du postback éffectué aprés l'évènement, le bouton doit impérativement être rechargé dans la page pour que l'évènement soit traité. Quitte à mettre sa propriétée visible à false si vous ne voulez pas qu'il soit visible.


Comment vérifier la validité d'une adresse ip dans un TextBox?
auteur : Louis-Guillaume Morand
Il convient d'utiliser un RegularExpressionValidator pour vérifier la strucuture de la chaîne:

					<asp:RegularExpressionValidator
					id="RegularExpressionValidator"
					runat="server"
					Display="Static"
					ControlToValidate="NsAd1"
					ValidationExpression="([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]">
					</asp:RegularExpressionValidator>
				

Comment empêcher un RequiredFieldValidator de fonctionner lors du clic sur un bouton?
auteur : Didier Danse
Les RequiredFieldValidator effectue ses vérifications lors de chaque envoi au serveur. Dans le cas d'un bouton "Annuler" ou "Précédent", cela est un peu embêtant puisque les données ne seront certainement pas correctes et la page ne sera donc pas envoyée au serveur.

Pour résoudre cela, il suffit de mettre la propriété CausesValidation du bouton à false.

					<asp:Button id="button1" runat="server" CausesValidation="false"/>
				

Pourquoi ai-je une erreur injection script?
auteur : Didier Danse
On a parfois besoin d'envoyer des informations telles que du xml, html ou tout autre chose contenant <...>. Par défaut, asp.NET refuse l'envoi de ces tags et l'informe par l'intermédiaire d'une exception qui signale que, par mesure de sécurité, il est interdit d'envoyer de telles choses au serveur. Effectivement, en autorisant cet envoi, il serait possible d'injecter du javascript par exemple.

Pour permettre l'envoi de ces informations, il est nécessaire de mettre validateRequest="false" dans la directive "Page".

Une fois ces informations envoyées, il faut encore précisé au serveur qu'il ne doit pas les interpréter mais bien garder cela comme du texte. Ceci se fait par l'intermédiaire de


					Dim html As String = Server.HtmlEncode(TextBox1.Text)
				

Comment lire un TextBox ligne par ligne?
auteur : Xavier Talour
Pour effectuer une action sur chaque ligne d'un "texte" encodé dans un TextBox:

					For Each line As String In TextBox1.Lines
					' Traitement
					Response.Write(line)
					Next
				

La propriété SelectedValue d'une DropDownList me renvoie Nothing, pourquoi?
auteur : Didier Danse
Il arrive fréquemment que l'on remplisse une DropDownList avec les valeurs qui sont à afficher. Par contre, les valeurs sont souvent oubliées lors de cette initialisation. Si l'initialisation se fait à l'aide d'un DataSet, rien de plus simple, il suffit de spécifier quel est le champ qui permettra de récupérer la valeur:

					NomDropDownList.DataSource = DbTemplate.GetCategories
					NomDropDownList.DataTextField = "champ_a_afficher"
					NomDropDownList.DataValueField = "champ_valeur"
					NomDropDownList.DataBind

				
Si l'initialisation se fait par l'ajout manuel d'Items, il suffit de créer des Items en spécifiant les deux valeurs.

					Dim li As ListItem = New ListItem
					li.Text = "texte"
					li.Value = "valeur"
					NomDropDownList.Items.Add(li)
				

Comment modifier le font-name d'un label en code behind?
auteur : Didier Danse
Si l'on souhaite changer la police (la taille par exemple), il est nécessaire d'utiliser un style. Ce style est défini de la manière suivante:

					Dim monstyle As New Style

					monstyle.BorderColor = Color.Blue
					monstyle.BackColor = Color.Black
					monstyle.ForeColor = Color.Blue
					monstyle.Font.Name="Verdana"
					monstyle.Font.Size=20
				
Il ne reste plus qu'à l'appliquer au Label par

					label1.ApplyStyle(monstyle)
				

Comment ajouter d'autres éléments que ceux d'une liste ?
auteur : Didier Danse
Vous pouvez ajouter un Item directement en utilisant Items.Add. Le premier paramètre correspond à l'emplacement (en l'occurrence 0) :

					 
ddl.Items.insert(0,"mon texte")

				
Cependant, cette solution ne fait qu'afficher un texte. Si vous souhaitez passer un texte ainsi que la valeur correspondante, il est nécessaire d'utiliser un objet ListItem :

					 
Dim li as ListItem=New ListItem("mon texte", "ma valeur")
ddl.Items.Insert(0, li)

				

Lorsque j'agis sur les attributs d'un checkbox, c'est sur le span associé qu'est répercutée mon action
auteur : nico-pyright(c)
Imaginons un asp:checkbox et une fonction javascript cliente qui affiche si la case est cochée ou non.
On pourrait etre tenté de faire :

					<asp:CheckBox runat="server" Text="Cochez moi" onchange="alert(this.checked);" />
				
sauf que ceci ne va pas marcher, en effet asp.net génère :

					<span onchange="alert(this.checked);"><input id="ctl02" type="checkbox" name="ctl02" /><label for="ctl02">Cochez moi</label></span>>
				
on se rend compte que le onchange est appliqué au span.
Comment faire alors pour agir sur l'input de type checkbox ?
il faudra passer par le code behind :

					MonCheckbox.InputAttributes.Add("onchange", "alert(this.checked);")
				
et cette fois-ci, asp.net génèrera :

					<input id="MonCheckbox" type="checkbox" name="MonCheckbox" onchange="alert(this.checked);" /><label for="MonCheckbox">Cochez moi</label>
				
NB : les attributs du label seront accessibles grace à LabelAttributes


Comment filtrer et masquer des éléments d'un repeater ?
auteur : nico-pyright(c)
Il peut arriver qu'on ait besoin de faire un filtre sur une datasource de repeater mais qu'on ne puisse pas toujours filtrer cette source en amont. Dans ce cas, on peut très bien faire notre filtre au moment où le repeater se construit.
Soit un repeater tout bete :

					<asp:Repeater runat="server" ID="MonRepeater" OnItemDataBound="ItemDataBound"> 
  <ItemTemplate> 
    <asp:Label runat="server" Text="<%#Container.DataItem %>" /> 
  </ItemTemplate> 
</asp:Repeater>
				

					MonRepeater.DataSource = New Integer() {1, 2, 3, 4, 5, 6, 7} 
MonRepeater.DataBind()
				
Il suffit d'agir sur le ItemDataBound et de masquer l'élément.
Ici par exemple, je n'affiche que les nombres impairs :


					Protected Sub ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
	If e.Item.DataItem Mod 2 = 0 Then
		e.Item.Visible = False
	End If
End Sub

				
Une autre solution est d'intervenir au moment du databinding

					<asp:Repeater runat="server" ID="MonRepeater" OnDataBinding="DataBindingRepeater">

Protected Sub DataBindingRepeater(ByVal sender As Object, ByVal e As EventArgs)
	Dim r As Repeater = sender
	r.DataSource = Array.FindAll(Of Integer)(r.DataSource, AddressOf filtre)
End Sub

Public Function filtre(ByVal i As Integer) As Boolean
	Return i Mod 2 <> 0
End Function
				

Comment passer des valeurs d'une page à une autre ... PostbackUrl, CrossPostBack et Server.Transfer
auteur : nico-pyright(c)
Une manière très simple de récupérer des valeurs d'une page à l'autre est d'utiliser Server.Transfert qui permet de terminer l'exécution de la page courante et d'enchainer sur une nouvelle page.
Cela peut s'utiliser comme ca :

					<TextBox ID="MonTxtBox" runat="server" />
<asp:LinkButton runat="server" OnClick="ClickLien" Text="Changer de page" />

				

					Protected Sub ClickLien(ByVal sender As Object, ByVal e As EventArgs)
	Server.Transfer("~/Page2.aspx")
End Sub
				
L'avantage de cette utilisation est qu'on peut aisément récupérer la valeur de notre textbox par exemple dans la Page2, en utilisant la propriété PreviousPage et en la castant avec le bon type.
En imaginant que la page expose une propriété publique de ce genre,

					Public Function GetValue() As String
    Return MonTxtBox.Text
End Function

				
on pourra faire par exemple dans le OnLoad de la Page2

					MonLabel.Text = CType(PreviousPage, _Default).GetValue()

				
Ceci permet également de faire transiter des objets plus complexes que des strings. Imaginons que dans ma première page j'ai construit une collection de liste de chaipakoi, il sera alors très simple de cette facon de la faire transiter jusqu'à la page suivante.
Asp.Net 2.0 ajoute la notion de cross page posting, à savoir que l'exemple ci-dessous pourra se transformer en :

					<asp:LinkButton runat="server" PostBackUrl="~/Page2.aspx" Text="Changer de page" />

				
Notez la propriété PostBackUrl qui nous enlève la gestion du Server.Transfert et qui évite de faire une étape intermédiaire en repassant par la page Default. Nous sommes également déchargé de la gestion du handler sur le click de bouton.
Toutefois, l'utilisation de la propriété PreviousPage dans la Page2 nous fait repasser dans le OnInit, OnLoad... de la page Default. On pourra éventuellement contrôler les actions à y effectuer en testant la propriété IsCrossPagePostBack qui indiquera si nous sommes en train de faire un cross page posting.
Les deux concepts sont quasiments équivalent.
Une différence majeure est que dans le cas de l'utilisation de Server.Transfert, le navigateur n'est pas au courant du transfer, et un effet visible sera que l'url reste inchangée.
Dans le cas d'un cross page, l'url sera la bonne.
NB : il pourra être intéressant d'effectuer quelques vérifications supplémentaires, notamment pour être bien sur que l'on récupère la page attendu comme PreviousPage, et transformer le basique cast du dessus en

					Dim previousPage As _Default = previousPage
If Not previousPage Is Nothing Then
	' ...
End If

				
PreviousPage peut être également fortement typée en rajoutant une directive dans la page destination.
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
ce qui fait que dans le codebehind, on aura plus besoin de cast et on pourra utiliser directement
MonLabel.Text = PreviousPage.GetValue();
En fait, le designer nous surchage simplement la propriété :

					Public Shadows ReadOnly Property PreviousPage() As WebApplication2.[Default]
					Get
					Return CType(MyBase.PreviousPage, WebApplication2.[Default])
					End Get
					End Property
				
Ce qui lèvera une exception si jamais on vient d'une autre page ...


Pourquoi je perds la valeur de mon contrôle lors d'un postback ?
auteur : nico-pyright(c)
C'est un cas très fréquent lors de l'alimentation du contrôle dans le OnLoad (une dropdown par exemple). Il faut vérifier qu'on est pas dans un postback pour alimenter les données.

					Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
	If Not IsPostBack Then
		' code à placer pour alimenter le contrôle
	End If
End Sub

				

Comment savoir quel contrôle à déclenché le postback ?
auteur : nico-pyright(c)
On examinera la valeur de Request.Form["__EVENTTARGET"] qui contiendra l'uniqueId du contrôle qui a déclenché le postback

lien : Parfois ma dropdownlist ne lève pas l'événement OnSelectedIndexChanged ou OnTextChanged, même si AutoPostBack='true', que faire ?

Comment maintenir le scroll après un postback ?
auteur : nico-pyright(c)

					<%@ Page MaintainScrollPositionOnPostback="true" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="testScroll._Default" %> 
 
<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 TransitionalEN" "http:www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
  <title>Untitled Page</title> 
</head> 
<body> 
  <form id="form1" runat="server"> 
  <asp:Label runat="server" Text="<%#DateTime.Now.ToShortTimeString() %>" /><br/> 
  <p> 
ici mettre plein de trucs histoire d'avoir une barre de défilement 
  </p> 
  <br /> 
  <br /> 
  <asp:Button runat="server" Text="Valider" /> 
   
  </form> 
</body> 
</html> 

				
L'utilisation de la propriété MaintainScrollPositionOnPostback (positionnée à true) sur la page permet de rajouter automatiquement du javascript qui se chargera de re-positionner correctement le scroll à l'endroit où on l'a laissé.


Comment poster automatiquement la page en javascript ?
auteur : nico-pyright(c)
Pour que le framework.net puisse appréhender correctement le postback d'une page, il va falloir utiliser la méthode javascript _doPostBack(...).
Si on utilise une quelconque autre méthode (form.submit(), etc ...), cela ne sera pas géré correctement.
On va alors utiliser la méthode GetPostBackEventReference pour générer correctement la fonction _doPostBack.

Prenons l'exemple simpliste d'une dropdownlist qui devra poster la page à chaque changement de selection (notez que ceci peut etre fait automatiquement grace à la propriété autopostback, mais ce n'est pas le but de la présentation).

soit la page suivante :

					<asp:DropDownList runat="server" ID="maDropDown"> 
  <asp:ListItem Text="Valeur 1" /> 
  <asp:ListItem Text="Valeur 2" /> 
  <asp:ListItem Text="Valeur 3" /> 
</asp:DropDownList>

				
dans le code behind, on associe la méthode javascript onchange à la fonction qui va poster la page. On le construira ainsi :

					Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
  maDropDown.Attributes["onchange"] = Page.ClientScript.GetPostBackEventReference(maDropDown, maDropDown.ID)
  If (IsPostBack) Then
	Response.Write("la page a été correctement postée à " + DateTime.Now.ToLongTimeString())
End Sub

				
Vous pouvez constater que la page est postée à chaque changement de valeur dans la dropdown.
On peut également vérifier que ce postback est conforme en utilisant la propriété __EVENTTARGET comme expliqué ici.

					Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
  maDropDown.Attributes["onchange"] = Page.ClientScript.GetPostBackEventReference(maDropDown, maDropDown.ID)
  If IsPostBack And Request.Form["__EVENTTARGET"] <> Nothing And Request.Form["__EVENTTARGET"].Contains(maDropDown.UniqueID) Then
	Response.Write("la page a été correctement postée par la dropdownlist à " + DateTime.Now.ToLongTimeString())
  End If
  MyBase.OnLoad(e)
End Sub

				

Comment simuler un click de bouton pour poster une page ?
auteur : nico-pyright(c)
Prenons un exemple avec un TextBox et un bouton :

					<asp:TextBox ID="leTextBox" runat="server" />  
<asp:Button ID="monBouton" runat="server" Text="go" OnClick="clic" /> 

				
on a l'événement du click dans le code behind écrit ainsi :

					Protected Sub clic(ByVal sender As Object, ByVal e As EventArgs)
  Response.Write("le bouton a été cliqué")
End Sub

				
Comment simuler un clic par exemple lorsque la valeur du textbox change ?
Pour ca, on va utiliser la méthode GetPostBackEventReference.

					Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
  leTextBox.Attributes["onchange"] = Page.ClientScript.GetPostBackEventReference(monBouton, monBouton.ID);
  MyBase.OnLoad(e)
End Sub

				
Si on s'arrete à ca, ASP.NET va nous lever une belle erreur :

					Argument de publication ou de rappel non valide. La validation d'événement est activée via <pages enableEventValidation="true"/> 
dans la configuration ou via <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de sécurité, 
cette fonctionnalité vérifie si les arguments des événements de publication ou de rappel proviennent du contrôle serveur qui les 
a rendus à l'origine. Si les données sont valides et attendues, utilisez la méthode ClientScriptManager.RegisterForEventValidation 
afin d'inscrire les données de publication ou de rappel pour la validation. 

				
Cette erreur provient du fait qu'ASP.NET effectue un controle sur le POST pour détecter d'éventuelles attaques d'injections ou d'altération de la requete POST. C'est le principe d'event validation.
Une solution pour le désactiver est de mettre la propriété EnableEventValidation à false dans la directive de Page.
Ceci aura pour effet de désactiver complètement ce processus de validation, ce qui peut etre nécessaire dans certain cas, mais ne permet plus cette vérification automatique pour toute la page (ceci ne peut pas etre fait controle par controle).

L'autre solution plus propre est d'indiquer à ASP.NET que ce postpack est tout à fait autorisé. C'est ce que permet l'utilisation de la méthode RegisterForEventValidation.
Cet appel ne pourra etre fait qu'en surchargeant la méthode Render de la page :

					Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
  Page.ClientScript.RegisterForEventValidation(monBouton.UniqueID, monBouton.ID); 
  MyBase.Render(writer)
End Sub

				
Désormais, le post est bien pris en compte et la méthode clic associée au bouton est bien lancée.


Comment utiliser une application Silverlight dans une page ASP.NET ?
auteur : nico-pyright(c)
En utilisant le web control.

					<asp:Silverlight>

				
Par exemple :

					<asp:Silverlight ID="Silverlight1" runat="server" Source="monApplication.xap" Version="2.0" Width="400" Height="300" />

				
Il faudra bien sur avoir défini le tag au préalable :

					<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" TagPrefix="asp" %>

				
ou alors dans le web.config

					<add tagPrefix="asp" namespace="System.Web.UI.SilverlightControls" assembly="System.Web.Silverlight" />

				
Ne pas oublier également de référencer l'assembly System.Web.Silverlight dans votre projet.

Quelques propriétés disponibles pour ce controle :
- Source : l'url de fichier xap à utiliser
- Version : la version minimale de silverlight qui doit etre vérifiée (pour utiliser silverlight 2, mettre cette propriété à 2.0)
- ScaleMode : ScaleMode.None ou ScaleMode.Stretch ou ScaleMode.Zoom
- Width : la largeur du controle
- Height : la hauteur du controle
- OnPluginLoaded : associe une fonction javascript et l'execute lorsque l'application silverlight est chargée
- OnPluginError : associe une fonction javascript et l'execute lorsque l'application silverlight a une erreur

N'oubliez pas non plus d'ajouter la balise :

					<asp:ScriptManager runat="server"/>

				

Comment faire communiquer mon application Silverlight avec ma page ASP.NET ?
auteur : nico-pyright(c)
En utilisant le DOM.
Soit par exemple l'extrait de page ASPX suivant :

					<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<div style="height:100px"> 
  <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/monApplication.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" /> 
</div> 
<div id="result"></div>

				
qui contient un controle <asp:Silverlight> et un <div> identifié par son id : "result".
On utilisera la classe System.Windows.Browser.HtmlPage, par exemple, lors du click sur un bouton Silverlight, on pourra faire :

					Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
  var element = HtmlPage.Document.GetElementById("result"); 
  element.SetAttribute("innerText", "valeur venant de Silverlight"); 
End Sub

				
Ainsi, on pourra modifier le contenu du div depuis notre application Silverlight.



Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.