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 slectionne un item, c'est toujours la premire valeur de la liste qui est retourne
        Comment ajouter dynamiquement des contrles une page ?
        Comment crer dynamiquement des mtas tags ?
        Comment capturer le clic d'un bouton cr dynamiquement ?
        Comment vrifier la validit d'une adresse ip dans un TextBox?
        Comment empcher 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 proprit SelectedValue d'une DropDownList me renvoie Nothing, pourquoi?
        Comment modifier le font-name d'un label en code behind?
        Comment ajouter d'autres lments que ceux d'une liste ?
        Lorsque j'agis sur les attributs d'un checkbox, c'est sur le span associ qu'est rpercute mon action
        Comment filtrer et masquer des lments d'un repeater ?
        Comment passer des valeurs d'une page une autre ... PostbackUrl, CrossPostBack et Server.Transfer
        Pourquoi je perds la valeur de mon contrle lors d'un postback ?
        Comment savoir quel contrle dclench le postback ?
        Comment maintenir le scroll aprs 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 insrer un lment dans une DropDownList un emplacement donn?
                J'ai dclar l'attribut OnChange sur ma DropDownList mais rien ne se passe lors d'un changement de valeur. Pourquoi?
                Parfois ma dropdownlist ne lve pas l'vnement OnSelectedIndexChanged ou OnTextChanged, mme si AutoPostBack='true', que faire ?
                Comment lever l'vnement 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 contrles serveur que l'on peut valider ?
                Comment vrifier 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 paramtres 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 slectionne un item, c'est toujours la premire valeur de la liste qui est retourne
auteur : David Pedehourcq
Ce problme est trs rcurent. Dans 99% des cas le problme 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 frquement comise est d'oublier le "If not page.IsPostBack then" quand vous slectionnez un objet de la dropdownlist, la page se recharge en fesant un postback, donc repasse par le "Page_Load et reinitialise votre dropdownlist. On spcifie donc qu'il ne faut pas reinitialiser la dropdownlist en cas de PostBack et on rcuprera ainsi la valeur slectionne.


Comment ajouter dynamiquement des contrles 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 contrle dynamiquement une page aspx. Vous pouvez ensuite jouer sur les diffrentes proprits et mthodes du webcontrol pour l'initialiser comme vous souhaitez.


Comment crer dynamiquement des mtas tags ?
auteur : David Pedehourcq
Nous allons voir dans cet exemple qu'il est trs facile de crer dynamiquement des mtas 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 dclare :

					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 mtas 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 : Dclic
Dans la procdure de cration du bouton on ajoute :
AddHandler Bbouton.Click, AddressOf MesBoutons_Click


ensuite :

					Sub MesBoutons_Click(ByVal sender As Object, ByVal e As System.EventArgs)
					'Rcupration du bouton ayant dclench l'vnement
					Dim Btn As Button
					Btn = Ctype(sender,Button)
					'Traitement
					...
					End Sub
				


ATTENTION : Lors du postback ffectu aprs l'vnement, le bouton doit imprativement tre recharg dans la page pour que l'vnement soit trait. Quitte mettre sa proprite visible false si vous ne voulez pas qu'il soit visible.


Comment vrifier la validit d'une adresse ip dans un TextBox?
auteur : Louis-Guillaume Morand
Il convient d'utiliser un RegularExpressionValidator pour vrifier la strucuture de la chane:

					<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 empcher un RequiredFieldValidator de fonctionner lors du clic sur un bouton?
auteur : Didier Danse
Les RequiredFieldValidator effectue ses vrifications lors de chaque envoi au serveur. Dans le cas d'un bouton "Annuler" ou "Prcdent", cela est un peu embtant puisque les donnes ne seront certainement pas correctes et la page ne sera donc pas envoye au serveur.

Pour rsoudre cela, il suffit de mettre la proprit 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 dfaut, asp.NET refuse l'envoi de ces tags et l'informe par l'intermdiaire d'une exception qui signale que, par mesure de scurit, 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 ncessaire de mettre validateRequest="false" dans la directive "Page".

Une fois ces informations envoyes, il faut encore prcis au serveur qu'il ne doit pas les interprter mais bien garder cela comme du texte. Ceci se fait par l'intermdiaire 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 proprit SelectedValue d'une DropDownList me renvoie Nothing, pourquoi?
auteur : Didier Danse
Il arrive frquemment que l'on remplisse une DropDownList avec les valeurs qui sont afficher. Par contre, les valeurs sont souvent oublies lors de cette initialisation. Si l'initialisation se fait l'aide d'un DataSet, rien de plus simple, il suffit de spcifier quel est le champ qui permettra de rcuprer 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 crer des Items en spcifiant 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 ncessaire d'utiliser un style. Ce style est dfini de la manire 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 lments que ceux d'une liste ?
auteur : Didier Danse
Vous pouvez ajouter un Item directement en utilisant Items.Add. Le premier paramtre 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 ncessaire 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 rpercute mon action
auteur : nico-pyright(c)
Imaginons un asp:checkbox et une fonction javascript cliente qui affiche si la case est coche 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 gnre :

					<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 gnrera :

					<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 lments 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 trs 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'lment.
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 manire trs simple de rcuprer des valeurs d'une page l'autre est d'utiliser Server.Transfert qui permet de terminer l'excution 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 aisment rcuprer la valeur de notre textbox par exemple dans la Page2, en utilisant la proprit PreviousPage et en la castant avec le bon type.
En imaginant que la page expose une proprit 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 premire page j'ai construit une collection de liste de chaipakoi, il sera alors trs 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 proprit PostBackUrl qui nous enlve la gestion du Server.Transfert et qui vite de faire une tape intermdiaire en repassant par la page Default. Nous sommes galement dcharg de la gestion du handler sur le click de bouton.
Toutefois, l'utilisation de la proprit PreviousPage dans la Page2 nous fait repasser dans le OnInit, OnLoad... de la page Default. On pourra ventuellement contrler les actions y effectuer en testant la proprit IsCrossPagePostBack qui indiquera si nous sommes en train de faire un cross page posting.
Les deux concepts sont quasiments quivalent.
Une diffrence 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 inchange.
Dans le cas d'un cross page, l'url sera la bonne.
NB : il pourra tre intressant d'effectuer quelques vrifications supplmentaires, notamment pour tre bien sur que l'on rcupre 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 type 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 proprit :

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


Pourquoi je perds la valeur de mon contrle lors d'un postback ?
auteur : nico-pyright(c)
C'est un cas trs frquent lors de l'alimentation du contrle dans le OnLoad (une dropdown par exemple). Il faut vrifier qu'on est pas dans un postback pour alimenter les donnes.

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

				

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

lien : Parfois ma dropdownlist ne lve pas l'vnement OnSelectedIndexChanged ou OnTextChanged, mme si AutoPostBack='true', que faire ?

Comment maintenir le scroll aprs 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 dfilement 
  </p> 
  <br /> 
  <br /> 
  <asp:Button runat="server" Text="Valider" /> 
   
  </form> 
</body> 
</html> 

				
L'utilisation de la proprit MaintainScrollPositionOnPostback (positionne 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 apprhender correctement le postback d'une page, il va falloir utiliser la mthode javascript _doPostBack(...).
Si on utilise une quelconque autre mthode (form.submit(), etc ...), cela ne sera pas gr correctement.
On va alors utiliser la mthode GetPostBackEventReference pour gnrer 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 proprit autopostback, mais ce n'est pas le but de la prsentation).

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 mthode 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 poste  " + DateTime.Now.ToLongTimeString())
End Sub

				
Vous pouvez constater que la page est poste chaque changement de valeur dans la dropdown.
On peut galement vrifier que ce postback est conforme en utilisant la proprit __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 poste 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'vnement 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 mthode 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'vnement est active via <pages enableEventValidation="true"/> 
dans la configuration ou via <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de scurit, 
cette fonctionnalit vrifie si les arguments des vnements de publication ou de rappel proviennent du contrle serveur qui les 
a rendus  l'origine. Si les donnes sont valides et attendues, utilisez la mthode ClientScriptManager.RegisterForEventValidation 
afin d'inscrire les donnes de publication ou de rappel pour la validation. 

				
Cette erreur provient du fait qu'ASP.NET effectue un controle sur le POST pour dtecter d'ventuelles attaques d'injections ou d'altration de la requete POST. C'est le principe d'event validation.
Une solution pour le dsactiver est de mettre la proprit EnableEventValidation false dans la directive de Page.
Ceci aura pour effet de dsactiver compltement ce processus de validation, ce qui peut etre ncessaire dans certain cas, mais ne permet plus cette vrification 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 mthode RegisterForEventValidation.
Cet appel ne pourra etre fait qu'en surchargeant la mthode 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

				
Dsormais, le post est bien pris en compte et la mthode clic associe au bouton est bien lance.


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 dfini le tag au pralable :

					<%@ 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 rfrencer l'assembly System.Web.Silverlight dans votre projet.

Quelques proprits disponibles pour ce controle :
- Source : l'url de fichier xap utiliser
- Version : la version minimale de silverlight qui doit etre vrifie (pour utiliser silverlight 2, mettre cette proprit 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 charge
- 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.