À l'aide de la variable code-behind dans ASP.NET
Je vais avoir un peu de difficulté paramètre une variable dans le code-behind et de l'utiliser dans le ASP.NET page (de la définir comme la valeur à l'intérieur d'une zone de texte). Ma page web simplement des erreurs et dit qu'il n'existe pas dans le contexte actuel. La variable est déclarée et tous ensemble dans la méthode Page_Load.
Voici la ASP.NET code. Je suppose que vous n'aurez pas besoin de voir le code derrière, que je l'ai testé en sortie la variable via le code-behind (à l'aide de la Réponse.Écrire) et qui fonctionne très bien.
<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>
Merci 🙂
EDIT: Ok bien sûr, voici les parties pertinentes du code derrière
string schedID = sched.SchedulerInstanceId;
JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1");
JobDataMap dataMap2 = jobDetail2.JobDataMap;
initialPath = dataMap2.GetString("initialPath");
Response.Write(initialPath);
La réponse.écrire est pour le débogage - il des sorties de la variable correctement de sorte que la variable est en fait défini
EDIT 2: Voici le code derrière
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");
}
Ce n'est pas le travail, c'est juste du <%= initialpath %> dans le formulaire d'ASP. Simplement, il n'a tout simplement pas montrer quoi que ce soit, à l'instar de la variable est affectée rien
- Votre code-behind est au moins aussi important à ce problème. Pouvez-vous nous montrer ça aussi?
- Je pense que nous avons besoin de plus d'informations que Kirk a dit. L'Édition ne nous dit pas encore si "initialPath" est public, ou si son accès via une propriété...
- Désolé, j'ai désormais la variable public CrazyDart démontré ci-dessous, de sorte que la variable du doctype est comme ceci:
- public string initialPath { get; set; }
Vous devez vous connecter pour publier un commentaire.
Je ne vois pas que c'est là que l'appel à
DataBind()
est faite. Si elle est faite avant est définie, alors<%#initialPath%>
va écrire sa valeur de départ (null, qui est écrite comme une chaîne vide dans un tel cas). Si il n'est pas fait du tout, alors<%#initialPath%>
ne sera jamais écrire quoi que ce soit. Vous devez vous assurer queDataBind()
est appelé à un moment approprié, comme à la fin dePage_Load
Dans le codebehind vous devez créer une propriété publique. Ensuite, vous pouvez l'utiliser tout ce que vous voulez dans la page aspx.
dans le code behind:
en aspx:
<%# initialPath %>
est une expression de liaison de données ce qui signifie que ASP.NET va chercher uninitialPath
bien sur la collection vous lie. Bien évidemment une telle propriété n'existe pas, car c'est une variable locale.