2016-05-06 5 views
0

Ich benutze ASP Web Forms. Angenommen, ich habe eine Variable in meiner Benutzersteuerung (ascx.cs)Pass C# Variable zu JavaScript in ASP-Webforms

protected void Page_Load(object sender, EventArgs e) 
     { 
      public string someText = "Hello World"; 
     } 

ich diese Variable JavaScript übergeben möge. Der Code in der Datei ascx:

<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %> 
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %> 
<%@ Import Namespace="Microsoft.SharePoint" %> 
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CalendarUserControl.ascx.cs" Inherits="Fransabank.Calendar.CalendarUserControl" %> 

<script type="text/javascript"> 
    console.log(someText); 
</script> 

Ich bin im Konsolenfenster bekommen:

ReferenceError: someText is not defined

Antwort

0

EDIT

Meine schlecht, ich dachte, du ASP.Net mit worden bin MVC. Ich habe die MVC-Lösung unten gelassen, aber ich werde Ihnen auch zeigen, wie dies mit ASP.Net getan werden kann.

public string someText {get; set;} 

Und in Front-End:

<script type="text/javascript"> 
    console.log('<%= someText %>'); 
</script> 

MVC-Lösung

Passing Werte wie

In Web Forms können Sie eine Eigenschaft in Ihrem Code-behind hinzufügen das kann erreicht werden, ist aber in den meisten Fällen falsch. Sie sollten lieber ein ViewModel verwenden - dafür wurde MVC erstellt.

erstellen Modell:

public class MyViewModel 
{ 
    public string someText {get; set;} 
} 

Wenn Sie Ihren Blick vom Regler zurückzukehren, verwenden Sie:

public ActionResult Index 
{ 
    return View(new MyViewModel() { someText = "lalalala" }); 
} 

Ihre Ansicht (cshtml):

@model(MyViewModel) // be sure to use whole namespace, like Models.MyViewModel 

Und in Ihrem js:

<script type="text/javascript"> 
    console.log(@Model.someText); 
</script> 
+0

Ok danke, aber wie kann es in Webforms erreicht werden? –

0

Sie können einen Inline-Server-Tag verwenden:

public string SomeText 
{ 
    get { return "sometext"; } 
} 

In Ihrem Markup:

<script type="text/javascript"> 
    console.log(<%=SomeText%>); 
</script> 

Oder Sie könnten eine HiddenField verwenden:

protected void Page_Load(object sender, EventArgs e) 
{ 
    hdnSomeText.value = "sometext"; 
} 

Markup:

<asp:HiddenField ID="hdnSomeText" runat="server" ClientIDMode="Static" /> 

<script type="text/javascript"> 
    console.log(document.getElementById('hdnSomeText').value); 
</script>