如何在后台代码中调用变量到aspx页面

46

我知道我曾经看到过这个问题,但是现在想不起来正确的解决方式了...基本上,我在我的.cs文件中有一个名为"string clients"的字符串变量...但是我想要能够将它传递到我的aspx页面,类似于:

<%=clients%>  

请纠正我,我不太记得或者不确定如何做这件事情(新手使用C#)。我在谷歌上搜索时,没有获得很清晰的答案,也没有找到很多相关的资料。我的搜索关键词是:

"asp.net c# <%= %> not consistent results.. maybe because i do not know how to call these.."


可能是重复的问题:从代码后台获取属性到aspx页面 - onof
9个回答

67

为了在 ASPX 标记中正确地显示,该字段必须声明为 public。无论如何,您都可以声明一个属性:


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

更新:根据下面的评论,它也可以被声明为protected

然后,在ASPX页面中调用它:

<%=Clients%>

请注意,如果将其放在服务器标记属性上,则此方法不起作用。例如:

<asp:Label runat="server" Text="<%=Clients%>" />

这是无效的,但这个则有效:

<div><%=Clients%></div>


2
我该如何在 .aspx 页面中调用它? - user710502
添加了一些示例和解释。 - Joel A. Villarreal Bertoldi
3
如果你将双引号替换为单引号,它就可以工作了。 <asp:Label runat="server" Text='<%=Clients%>' /> - Mike

30
在您的代码后台文件中,声明一个公共变量。
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>

9

1
受保护的工作同样有效,因为aspx标记正在继承代码后台。 - gislikonrad

7

在浏览 ASPX 页面之前,请确保您已编译了 *.cs 文件。


这是我的问题。在从ASPX调用项目之前,必须先构建该项目,否则智能感知会将其标记为不存在。 - Ghasan غسان

6

首先要确保变量的访问级别是受保护的或公共的。如果变量或属性是私有的,则页面将无法访问它。

后台代码

protected String Clients { get; set; }

Aspx

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

4
您需要将您的客户端变量声明为public,例如:
public string clients;

但是你最好将其作为属性来处理,例如:
private string clients;
public string Clients{ get{ return clients; } set {clients = value;} }

然后,您可以在您的.aspx页面中像这样调用它:
<%=Clients%>

C#中的变量默认为私有。在MSDN上了解C#中的访问修饰符属性


3
你可以使用以下数据绑定表达式<%# 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();
        }

}


2
我会创建一个属性来访问该变量,就像这样:

protected string Test
{
    get; set;
}

在您的标记中:

<%= this.Test %>

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#";
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接