J'ai un contrôle qui a un bouton dessus. Tout le bouton est rediriger l'utilisateur vers une autre page. Sur ce contrôle j'ai un autre contrôle qui affiche juste quelques trucs, rien d'extraordinaire. Quand je clique sur le bouton, ça ne fait rien. Lorsque je supprime ou commente l'autre contrôle, l'événement de bouton fonctionne. Est-ce par conception? Je ne suis pas sûr de savoir comment le réparer ou ce qui le cause.Le contrôle au sein d'un autre contrôle dans asp.net désactive les événements côté serveur?
ControlA.ascx contient un bouton avec un événement comme ceci:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Home.aspx");
}
ControlA.ascx contient un autre contrôle à l'intérieur de celui-ci, permet de l'appeler ControlB.ascx. L'événement de clic Button1 ne se déclenche pas lorsque ControlB.ascx se trouve dans ControlA.ascx, mais lorsque je le supprime ou le retire, l'événement Button1 se déclenche et passe à Home.aspx. Cela ne se produit pas seulement pour Button1, si je décide d'ajouter un second bouton et de créer un événement pour celui-ci, si ControlB est dans ControlA, l'événement du second bouton ne se déclenchera pas non plus.
balisage ControlA.asx et code:
<div>
<asp:Button runat="server" ID="Button1" Text="Register 2"
onclick="Button1_Click" />
</div>
<div>
<uc:ControlB ID="ControlB" runat="server" />
</div>
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/Home.aspx");
}
balisage ControlB.ascx:
<div>
<p>I am control B</p>
<p>
<sbi:SexyLinkButton ID="SexyLinkButton1" runat="server" Text="Go Home"
PostBackUrl="~/home.aspx" />
<asp:Button runat="server" ID="Button1" Text="Register 2"
onclick="Button1_Click" />
</p>
</div>
Comme indiqué précédemment, Button1_Click ne se déclenche pas si ControlB est à l'intérieur ControlA, mais si je retire ControlB ou commentez, Button1_Click tire.
je me suis dit quelque chose:
ControlB.ascx avait un bouton sur elle appelé SexyButton (n'a pas créé cela, quelqu'un d'autre a fait, lol) et quand je l'ai enlevé que de ControlB, bouton de ControlA travaillé. J'ai mis un bouton asp.net dans controlB et cela a fonctionné, donc ça a quelque chose à voir avec le contrôle SexyButton.
Si je mets un bouton asp.net sur ControB avec le SexyLinkButton, l'événement pour Button1 sur ControlB ne fonctionne pas. SexyLinkButton.cs - Si je mets le PostBackUrl sur le SexyLinkButton, les événements du bouton asp.net ne se déclenchent pas. Voici le code des SexyLinkButton.cs:
public class SexyLinkButton : LinkButton
{
private List<string> Css = new List<string>();
public string IconCssClass { get; set; }
public SizeEnum Size { get; set; }
public SexyLinkButton()
{
Size = SizeEnum.Normal;
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (!string.IsNullOrEmpty(CssClass)) Css.Add(CssClass); // User added Css
Css.Add("sbi-button"); // Standard Css for button
if (Size != SizeEnum.Normal) Css.Add(Size.ToString().ToLower()); // Size Css
// Nested spans per design and css requirements
HtmlGenericControl span1 = new HtmlGenericControl("span");
HtmlGenericControl span2 = new HtmlGenericControl("span");
// Nested span only for icon
if (!string.IsNullOrEmpty(this.IconCssClass))
{
HtmlGenericControl btnspan = new HtmlGenericControl("span");
btnspan.Attributes.Add("class", IconCssClass.Replace(".", string.Empty));
btnspan.InnerHtml = this.Text;
span2.Controls.Add(btnspan);
}
else
{
span2.InnerHtml = this.Text;
}
CssClass = string.Join(" ",Css.ToArray());
this.Text = "";
span1.Controls.Add(span2);
this.Controls.Add(span1);
base.Render(writer);
}
public enum SizeEnum
{
Normal,
Medium,
Large
}
}
Vous ne pouvez pas vous aider sans voir votre code. – womp
Plus précisément, quelles parties voulez-vous voir? – Xaisoft
Comment naviguer vers l'autre page si vous commentez le premier contrôle? – Shoban