Использование переменной из кода в ASP.NET - PullRequest
5 голосов
/ 04 октября 2010

У меня возникли трудности с установкой переменной из кода и ее использованием на странице ASP.NET (установка в качестве значения внутри текстового поля).Моя веб-страница просто ошибается и говорит, что она не существует в текущем контексте.Переменная объявляется и устанавливается все в методе Page_Load.

Вот соответствующий код ASP.NET.Я предполагаю, что вам не нужно видеть код позади, так как я проверил вывод переменной через codebehind (используя 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>

Спасибо :))

EDIT: Хорошо, конечно, вот соответствующие части кода, стоящие за

       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 предназначен для отладки - он выводит переменную правильно, поэтому переменная фактически установлена ​​

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

Что не работает, так это просто <% = initialpath%> в форме ASP.Он просто ничего не показывает, как будто переменной ничего не присвоено

Ответы [ 3 ]

12 голосов
/ 04 октября 2010

В коде позади вы должны создать его как публичную собственность.Затем вы можете использовать все, что вы хотите на странице aspx.

в коде позади:

public string yourvar { get; set; }

в aspx:

    <EditItemTemplate>
        <asp:TextBox ID="TextBox6" runat="server" 
            Text='<%= yourvar %>'></asp:TextBox>
    </EditItemTemplate>
3 голосов
/ 04 октября 2010

Чего я здесь не вижу, так это того, где делается звонок на DataBind(). Если это сделано до того, как установлено, то <%#initialPath%> запишет свое начальное значение (null, которое в таком случае записывается как пустая строка). Если это вообще не сделано, то <%#initialPath%> никогда ничего не напишет. Вы должны убедиться, что DataBind() вызывается в соответствующее время, например, в конце Page_Load

2 голосов
/ 04 октября 2010

<%# initialPath %> является выражением привязки данных, означающим, что ASP.NET будет искать свойство initialPath в коллекции, к которой вы привязываете.Очевидно, что такого свойства не существует, так как это локальная переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...