Controllo della procedura guidata in ASP.NET - Come impostare la proprietà NextButton Causevalidation su false

StackOverflow https://stackoverflow.com/questions/811040

  •  03-07-2019
  •  | 
  •  

Domanda

Ho provato a impostarlo nel codice e anche nel markup ma quando si fa clic sul pulsante Avanti, la pagina viene convalidata, voglio impedire che ciò accada e controllare quando deve avvenire la convalida e quando no. Eventuali suggerimenti o esempi di codice sarebbero apprezzati

È stato utile?

Soluzione

Il modo più semplice per farlo sarebbe rimuovere tutti i controlli di validazione dal WizardStep in cui la validazione deve essere saltata.

Tuttavia, se hai bisogno di funzionalità avanzate, dovrai impostare manualmente la proprietà CauseValidation dei pulsanti Successivo / Precedente in StepNavigationTemplate . Il controllo Wizard ASP.NET non espone proprietà che consentono di accedere direttamente ai controlli in NavigationTemplates, né espone alcuna proprietà per accedere a NavigationTemplate. Quindi, dobbiamo fare affidamento sul metodo FindControl per eseguire tutte le ricerche.

Un'informazione utile che ho trovato durante la ricerca di questo problema era che in fase di esecuzione il StepNavigationTemplate è di un tipo ASP.NET interno chiamato StepNavigationTemplateContainer e ha un ID " ; StepNavigationTemplateContainerID " ;. Ciò mi ha permesso di individuare StepNavigationTemplate e, quindi, il pulsante Avanti.

Segue il codice:


protected void Wizard1_ActiveStepChanged(object sender, EventArgs e)
{
  int step = Wizard1.ActiveStepIndex;

  // Disable validation for Step 2. (index is zero-based)
  if (step == 1)
  {
    ToggleValidation(false);
  }
  else  // Enable validation for subsequent steps.
  {  
    ToggleValidation(true);
  }
}

private void ToggleValidation(bool flag)
{
  WebControl stepNavTemplate = this.Wizard1.FindControl("StepNavigationTemplateContainerID") as WebControl;
  if (stepNavTemplate != null)
  {
    Button b = stepNavTemplate.FindControl("StepNextButton") as Button;
    if (b != null)
    {
      b.CausesValidation = flag;
    }
  }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top