使用ASP.NET中的代码后面的变量

时间:2010-10-04 15:38:34

标签: c# asp.net variables

我在后面的代码中设置变量并在ASP.NET页面中使用它(将其设置为文本框中的值)时遇到了一些困难。我的网页只是错误,并表示它在当前上下文中不存在。声明变量并在Page_Load方法中设置全部。

以下是相关的ASP.NET代码。我假设你不需要看到背后的代码,因为我已经测试过通过代码隐藏输出变量(使用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>

谢谢:)

编辑:好的,这是

背后代码的相关部分
       string schedID = sched.SchedulerInstanceId;
        JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1");
        JobDataMap dataMap2 = jobDetail2.JobDataMap;
        initialPath = dataMap2.GetString("initialPath");
        Response.Write(initialPath);

response.write用于调试 - 它正确输出变量,因此实际设置了变量

编辑2:这是背后的代码

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

什么不起作用只是&lt;%= initialpath%&gt;在ASP表单中。它只是没有显示任何东西,比如变量没有被分配

3 个答案:

答案 0 :(得分:12)

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

代码背后的

public string yourvar { get; set; }

在aspx中:

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

答案 1 :(得分:3)

我在这里看不到的是对DataBind()的调用。如果设置之前已设置,则<%#initialPath%>将写入其起始值(null,在这种情况下将写为空字符串)。如果它根本没有制作,那么<%#initialPath%>将永远不会写任何东西。您需要确保在适当的时间调用DataBind(),例如在Page_Load

结束时

答案 2 :(得分:2)

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