我在后面的代码中设置变量并在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表单中。它只是没有显示任何东西,比如变量没有被分配
答案 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
属性。显然这样的属性不存在,因为这是一个局部变量。