Je n'arrive pas à comprendre pourquoi le code suivant ne fonctionne pas. Je suis sûr que c'est quelque chose de réparateur qui me manque ou que je ne comprends pas. J'ai actuellement une page qui demande l'entrée de l'utilisateur. Si, en fonction de l'utilisateur d'entrée et connecté, je trouve déjà des données de cette page dans la base de données, j'ai besoin de mettre à jour les enregistrements existants plutôt que d'en créer de nouveaux, donc j'ai défini un booléen comme vrai. Le problème est, quand MyNextButton est cliqué, PreviouslySubmitted est toujours faux. Donc, je ne sais pas comment faire pour que la valeur de cette variable persiste. Tout conseil est apprécié, merci.Définition de la variable de niveau classe à utiliser entre les gestionnaires d'événements
public partial class MyForm : System.Web.UI.Page
{
private bool PreviouslySubmitted;
protected void Page_Load(object sender, EventArgs e)
{
MyButton.Click +=
(o, i) =>
{
q = from a in db.TableA
where (a.SomeField == SomeValue)
select a;
if(q.Any())
{
PreviouslySubmitted = true;
//populate the form's fields with values from database for user to revise
}
}
MyNextButton.Click +=
(o, i) =>
{
//the value of PreviouslySubmitted is false at this point,
//even if I made sure it was set to true the previous postback
if(PreviouslySubmitted)
{
//update database
}
else
{
//insert into database
}
}
Où 'PreviouslySubmitted' est-il déclaré et/ou défini sur 'false'? Je suppose que 'q.Any()' renvoie return et définit la variable. – ChrisF
Si la valeur par défaut de PreviouslySubmitted est false, il se peut que vous interceptiez l'événement de bouton MyNextButton.click d'une instance différente de la classe. Voyez quand votre constructeur est appelé. – Ando
@Chris - J'ai ajouté la déclaration de classe et bool pour plus de clarté. –