Estoy seguro de que esto es simple pero me está volviendo loco.¿Por qué se llaman los métodos no relacionados (autopostback) cuando se invoca un método Asp.Net ListBox autopostback?
Tengo un cuadro de lista en mi página para mostrar los artistas, que llama a un método cuando se cambia el índice, y un botón que carga un artista de esa lista en otra página cuando se hace clic:
<asp:ListBox ID="lbArtists" runat="server" Rows="1" AutoPostBack="true" OnSelectedIndexChanged="ShowArtistsWorks" />
<asp:Button ID="btnEditArtist" runat="server" Text="Edit the artist" OnClick="LoadArtist" />
Más adelante , tengo una lista similar de enlaces, que también tiene un método AutoPostBack:
<asp:ListBox ID="lbLinks" runat="server" Rows="1" AutoPostBack="true" OnSelectedIndexChanged="LoadLink" />
el problema es que cuando invoco ShowArtistsWorks()
haciendo clic btnEditArtist
, el método también es llamado LoadLink()
. ¿Por qué está sucediendo eso? ¿Por qué se llamará cuando no haya cambiado el índice en el lbLinks
ListBox? No debería acercarse a ese método.
EDIT: métodos (relevante) de código subyacente (
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack){
GetArtists(); // populates artists listbox
GetLinks(); // populates links listbox
}
}
protected void LoadArtist(object sender, EventArgs e){
if (lbArtists.SelectedValue != "")
Response.Redirect("Artist.aspx?id=" + lbArtists.SelectedValue);
}
protected void LoadLink(object sender, EventArgs e)
{
if (lbLinks.SelectedValue != "")
Response.Redirect("Link.aspx?id=" + lbLinks.SelectedValue);
}
editar # 2: podría fácilmente kludge una solución para esto en los métodos individuales para detenerlos sucede cuando no deberían , pero quiero entender por qué los métodos que no llaman, y que sólo se les llamó desde un solo lugar, obtener invoqué inadvertidamente
respuesta aceptada:. aunque Boon (ahora CRice) se puso en primer lugar con una explicación y una solución, decidí aceptar la explicación más completa de Jeff porque eso era lo que quería, un análisis más profundo. Gracias a todos los que contestaron.
Asegúrese de que no tiene EnableViewState = "false" en la página web.config o en la directiva de la página. – Phaedrus
No, no es eso. Fan de "Zen and the Art ..."? –
mofe ........... – CRice