2011-09-13 37 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(); 
     } 

}

相关问题