簡體   English   中英

使用ASP.NET中的代碼后面的變量

[英]Using variable from code behind in ASP.NET

我在后面的代碼中設置變量並在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");
    }

什么不起作用只是ASP表單中的<%= initialpath%>。 它只是沒有顯示任何東西,就像變量沒有分配任何東西

在代碼隱藏中,您需要將其創建為公共屬性。 然后,您可以在aspx頁面中使用它。

代碼背后:

public string yourvar { get; set; }

在aspx中:

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

我在這里看不到的是對DataBind()的調用。 如果設置之前已設置,則<%#initialPath%>將寫入其起始值(null,在這種情況下將寫為空字符串)。 如果它根本沒有,那么<%#initialPath%>將永遠不會寫任何東西。 您需要確保在適當的時間調用DataBind() ,例如在Page_Load的末尾

<%# initialPath %>是一個數據綁定表達式,這意味着ASP.NET將在您要綁定的集合上查找initialPath屬性。 顯然這樣的屬性不存在,因為這是一個局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM