C# 在ASP.NET中使用代码隐藏中的变量

C# 在ASP.NET中使用代码隐藏中的变量,c#,asp.net,variables,C#,Asp.net,Variables,在ASP.NET页面中(将其设置为文本框中的值),我很难从代码隐藏中设置变量并使用它。我的网页只是错误,并说它在当前上下文中不存在。变量在Page_Load方法中声明并设置为all 下面是相关的ASP.NET代码。我假设您不需要查看代码隐藏,因为我已经测试过通过codebehind(使用Response.Write)输出变量,这很好 <asp:TemplateField HeaderText="Initial Path" SortExpression="

在ASP.NET页面中(将其设置为文本框中的值),我很难从代码隐藏中设置变量并使用它。我的网页只是错误,并说它在当前上下文中不存在。变量在Page_Load方法中声明并设置为all

下面是相关的ASP.NET代码。我假设您不需要查看代码隐藏,因为我已经测试过通过codebehind(使用Response.Write)输出变量,这很好

 <asp:TemplateField HeaderText="Initial Path" 
                SortExpression="Initial_Path">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox6" runat="server" 
                        Text='<%# initialPath %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox8" runat="server" 
                        Text='<%# initialPath %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label8" runat="server" Text='<%# initialPath %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
response.write用于调试-它正确输出变量,以便实际设置变量

编辑2:下面是隐藏的代码

       string schedID = sched.SchedulerInstanceId;
        JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1");
        JobDataMap dataMap2 = jobDetail2.JobDataMap;
        initialPath = dataMap2.GetString("initialPath");
        Response.Write(initialPath);
public partial class EditJobDetails : System.Web.UI.Page
    {
    public string initialPath { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {

        //Scheduler stuff for Quartz.NET, removed because of length

        string schedID = sched.SchedulerInstanceId;
        JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1");
        JobDataMap dataMap2 = jobDetail2.JobDataMap;
        initialPath = dataMap2.GetString("initialPath");
    }

不起作用的只是ASP表单中的。它只是不显示任何内容,就像变量没有赋值一样。

是一个数据绑定表达式,这意味着ASP.NET将在您绑定到的集合上查找
initialPath
属性。显然,这样的属性不存在,因为这是一个局部变量。

在代码隐藏中,您需要将其创建为公共属性。然后您可以在aspx页面中使用它

在代码隐藏中:

public string yourvar { get; set; }
在aspx中:

    <EditItemTemplate>
        <asp:TextBox ID="TextBox6" runat="server" 
            Text='<%= yourvar %>'></asp:TextBox>
    </EditItemTemplate>


这里我没有看到调用
DataBind()
的地方。如果它是在设置之前生成的,则
将写入其起始值(null,在这种情况下将被写入空字符串)。如果它根本就不是制作的,那么
将永远不会写任何东西。您需要确保在适当的时间调用
DataBind()
,例如在
Page\u Load

的末尾,您的代码隐藏至少对这个问题同样重要。你也能给我们看看吗?我想我们需要更多的信息,就像柯克说的。编辑仍然没有告诉我们“initialPath”是否是公共的,或者它是否通过属性访问…抱歉,我现在已经将变量设置为公共的,如下所示,因此变量声明如下:公共字符串initialPath{get;set;}Cheers buddy,但是由于某种原因,ASP.NET表单中应该包含的字段在您的页面中是空白的。如果您确实需要设置变量的内容,您可以发布不起作用的示例代码吗?请包含属性、pageload和aspx。添加了相关部分:)实际变量正在赋值,因为我可以使用Response从代码中输出它。请写入,但我无法使用ok将其转换过来,所以我想我开始了解情况了。。。TemplateField需要有一个数据源。它用于迭代某个集合,而不仅仅是显示字符串。我使用模板字段作为详细信息视图的一部分-我需要在详细信息视图中显示的大多数内容都只是表中的字段,因此可以自动完成。对于一些字段,包括这个,当我使用Quartz.NET时,它被安装在一个“二进制图像”中,为了获得信息,我需要在codebehind中做一些工作,如果这样做有意义的话,我将DataBind放在最后,现在它可以正常工作了。谢谢,也感谢所有帮助过我的人:)