[英]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.