2012-03-26 9 views
2

Ich habe eine sehr einfache Benutzerkontrolle in C# geschrieben und in eine DLL kompiliert. Ich setze dieses Steuerelement in eine Aspx-Seite mit einem Objekt-Tag und dann versuchen Sie es mit den Dingen in Javascript. Ich habe andere Kontrollen, die gut funktionieren, aber aus irgendeinem Grund tut dies nicht. Hier ist der Code:User Control in ASPX-Seite funktioniert nicht mit Javascript


using System.Windows.Forms; 

namespace FileBrowser { 
    public partial class theBrowser : UserControl { 
     public theBrowser() { 
      InitializeComponent(); 
      MessageBox.Show("TBI"); 
     } 
     public string theFile = "foobar"; 
    } 
} 

Hier ist die Web-Seite Code:

<object id='fileBrowserControl' classid='http:FileBrowser.dll#FileBrowser.theBrowser'> 
      <span>File control did not initialize.</span> 

Dann

<script type="text/javascript"> 
    $(function() { 
var mfc = $('#fileBrowserControl')[0]; 
alert(mfc.theFile); 
    }); 

Wenn ich die Seite zu laden, die MessageBox zeigt, dass der Konstruktor hat gefeuert, aber der JavaScript-Alarm gibt 'undefined' für die Komponentenzeichenfolge. Dies ist eine abgespeckte Version, in der echten Version kann ich auch keine öffentlichen Funktionen von Javascript aufrufen. Ich bekomme den Fehler, "das Objekt unterstützt diese Eigenschaft oder Methode nicht."

Ich vermisse offensichtlich etwas wirklich einfaches, aber ich sehe es nicht. Danke für jede Hilfe. Jon

+0

Haben Sie die Absicht, anstelle eines Forms einen Web-Benutzersteuerelement verwenden Usercontrol? –

+0

Scheint keine Rolle zu spielen. Ich denke, ein Teil des Problems besteht darin, dass ich die Steuerelemente, die als ActiveX-Steuerelemente arbeiten, gemacht habe, und ich konnte das in VS2008 nicht herausfinden. – Jon

+0

Arbeiten Sie mit ASP.NET oder WinForms? – jrummell

Antwort

1

Ja, ASP.NET verwalteten Code nicht automatisch in clientseitige Skript einhaken, müssen Sie sich selbst anschließen. Mein Vorschlag wäre:

1) Erstellen Sie Ihr Benutzersteuerelement als Web-Usercontrol

2) Registrieren Sie auf Ihrer aspx Seite: http://msdn.microsoft.com/en-us/library/sbz9etab.aspx

3) In dem Code-behind Ihrer Benutzersteuerung nach es lädt, drücken Sie Ihren „thefile“ Eigenschaftswert in Skript Ihre Kontrolle ist so etwas wie dies mit:

Page.ClientScript.RegisterStartupScript(Page.GetType(),"inject","var theFile='" + this.theFile + "';",true); 

4) Dann können Sie diesen Wert in JavaScript, um die „thefile“ Variable zugreifen

Verwandte Themen