2010-10-04 23 views
5

我從後面的代碼中設置一個變量並在ASP.NET頁面中使用它(將其設置爲文本框內的值)時有點困難。我的網頁只是錯誤,並表示它不存在於當前的情況下。該變量被聲明並設置在Page_Load方法中。在ASP.NET中使用代碼後面的變量

這裏是相關的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); 

的回覆於相關部分是用於調試 - 它正確輸出變量,該變量實際上是設置

編輯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%>。它只是不顯示任何東西,就像變量沒有分配任何東西

+1

您的代碼隱藏對於此問題同等重要。你能告訴我們嗎? – 2010-10-04 15:41:23

+0

我想我們需要更多的信息,正如柯克所說的。編輯仍然不會告訴我們,如果「初始路徑」是公開的,或者如果它通過一個屬性訪問... – 2010-10-04 15:50:57

+0

對不起,我已經把變量公開爲CrazyDart在下面演示,所以變量聲明是這樣的: – Chris 2010-10-04 15:54:56

回答

3

我看不出這裏有什麼地方是調用DataBind()而成。如果之前設置了,則<%#initialPath%>將寫入其起始值(null,在這種情況下寫入空字符串)。如果沒有完成,那麼<%#initialPath%>將永遠不會寫任何東西。您需要確保在適當的時候調用DataBind(),例如在Page_Load的末尾

+0

啊,我把DataBind放在最後,它現在可以正常工作。謝謝,也感謝所有幫助過我的人:) – Chris 2010-10-04 16:20:05

2

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

12

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

在後面的代碼:

public string yourvar { get; set; } 
在ASPX

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

乾杯夥伴,但由於某種原因,它應該在ASP.NET窗體中的字段爲空 – Chris 2010-10-04 15:51:35

+0

是的,綁定表達式僅適用於屬性 – DancesWithBamboo 2010-10-04 15:52:11

+0

在Page_Load中,您需要設置var的內容,是否可以發佈示例代碼什麼不工作?請包括屬性,頁面加載和aspx。 – CrazyDart 2010-10-04 15:58:43

相關問題