Av Andreas Paulsson
31. March 2009, 17:47
Visa profil för Andreas Paulsson
För en tid sedan hamnade jag i ett läge där jag behövde kunna påverka variabler i en ASP sida
från en Silverlight applikation.
Efter lite letande på nätet hittade jag ett inlägg i ett forum som fick mig i rätt riktning.
Det hela var ganska enkelt visade det sig.
HtmlPage.Document.GetElementById("htmlText").SetProperty("innerText", this.SLTextBox.Text);
När problemet var löst var jag helt enkelt tvungen att ta reda på hur enkelt det är att påverka variabler/kontroller
från ASP till Silverlight.
Till att börja med måste man dekorera sin klass man vill ska vara synlig med attributet [ScriptableType].
Därefter måste alla metoder som ska vara åtkomliga dekoreras med attributet [ScriptableMember].
Dessa finns i namespacet System.Windows.Browser.
När detta är gjort behöver man registrera sin klass i ASP sidan när den skapas.
public Page()
{
InitializeComponent();
//Enables Javascript in ASP page to trigger events in this Silverlight app
HtmlPage.RegisterScriptableObject("SLASP_Comm", this);
}
Från ASP sidan kan man nu enkelt köra metoder i sin Silverlight applikation
function htmlButtonClick2() {
try
{
var app = document.getElementById("Xaml1").Content.SLASP_Comm;
var daBos = document.getElementById("SomeText");
app.htmlClick2(daBos.value);
}
}
Bifogar exempelprojekt att ladda ner.