2011-09-13 57 views
31

我知道我已經看到這個,但不能回想一下這樣做的正確方法......基本上我的一個字符串變量在我的.cs文件中被稱爲「字符串客戶端」。但我沒有能夠將它傳遞給我的aspx頁面像如何在代碼後面調用一個變量到aspx頁面

<%=clients%> 

請糾正我,我不記得或不知道如何做到這一點。 (新的C#),當我GOOGLE了..它不清楚..或不是很多這些在那裏..搜索爲

「asp.net c#<%= %>不一致的結果..也許因爲我不知道。如何調用這些..

+0

的[擺脫代碼後面的財產到aspx頁面]可能重複(http://stackoverflow.com/questions/1924309/get-property-from-code-behind-into-aspx -page) – onof

回答

53

的字段必須聲明public從ASPX標記正確的知名度在任何情況下,你可以聲明一個屬性:


private string clients; 
public string Clients { get { return clients; } } 

UPDATE:也可以申報如protected所述,如下面的評論所述。

然後調用它的ASPX側:

<%=客戶端%>

請注意,如果你把它放在一個服務器標記屬性這是不行的。例如:

< ASP:標籤RUNAT = 「服務器」 文本= 「<%=客戶端%>」/>

這是無效的。這就是:

< DIV> <%=客戶端%> </DIV>

+0

以及如何在.aspx頁面中調用它? – user710502

+1

你的'<%= clients%>'代碼是正確的。 –

+0

增加了一些例子和一些解釋。 –

7

對於

<%=clients%> 

工作,你需要有一個公共或受保護的變量clients代碼隱藏。

這裏是一個解釋的文章吧: http://msdn.microsoft.com/en-us/library/6c3yckfw.aspx

+1

請不要發佈舊鏈接。 –

+1

受保護的作品也是如此,因爲aspx標記正在繼承後面的代碼。 – gislikonrad

+0

謝謝。所有的後代都可以訪問,對。 –

4

你需要聲明你的客戶爲public,例如變量

public string clients; 

,但你應該做它作爲一個屬性,例如

private string clients; 
public string Clients{ get{ return clients; } set {clients = value;} } 

然後你就可以調用它在.aspx頁面是這樣的:在C#

<%=Clients%> 

變量默認都是私有的。閱讀更多關於access modifiers in C# on MSDNproperties in C# on MSDN

4

首先,您必須確保變量的訪問級別是受保護或公開的。如果變量或屬性是私人的,頁面將無法訪問它。

代碼隱藏

protected String Clients { get; set; } 

.aspx的

<span><%=Clients %> </span> 
5

確保您已經瀏覽ASPX頁面之前編譯您的* cs文件。

+0

這是我的問題。在從ASPX調用它之前,必須先構建該項目,否則您將獲得智能感知,將其標記爲不存在。 –

2

我想創建一個屬性來訪問變量,就像這樣:

protected string Test 
{ 
    get; set; 
} 

而且在你的標記:

<%= this.Test %> 
24

在隱藏文件代碼中,有一個公共變量

public partial class _Default : System.Web.UI.Page 
{ 
    public string clients; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     // your code that at one points sets the variable 
     this.clients = "abc"; 
    } 
} 

現在在您的設計代碼中,只需將其分配給如下內容:

<div> 
    <p><%= clients %></p> 
</div> 

甚至javascript變量

<script type="text/javascript"> 

    var clients = '<%= clients %>'; 

</script> 
1

HelloFromCsharp.aspx這個樣子的

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HelloFromCsharp.aspx.cs" Inherits="Test.HelloFromCsharp" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <p> 
     <%= clients%> 
    </p> 
    </form> 
</body> 
</html> 

而且HelloFromCsharp.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace Test 
{ 
    public partial class HelloFromCsharp : System.Web.UI.Page 
    { 
     public string clients; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      clients = "Hello From C#"; 
     } 
    } 
} 
0

您可以使用訪問公共/保護財產數據綁定表達<%# myproperty %>,如下所示:

<asp:Label ID="Label1" runat="server" Text="<%#CodeBehindVarPublic %>"></asp:Label> 

你應該調用DataBind方法,否則就無法進行評估。

public partial class WebForm1 : System.Web.UI.Page 
    { 
    public string CodeBehindVarPublic { get; set; } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      CodeBehindVarPublic ="xyz"; 
     //you should call the next line in case of using <%#CodeBehindVarPublic %> 

      DataBind(); 
     } 

}

相關問題