Einstellung ASP.NET Taste Attribute der client-Seite und Lesen-Attribut mit dem Wert server-Seite
Wie kann ich abrufen einer Button
benutzerdefinierte attribute nach dem Attribut value wurde geändert mit javascript?
Beispiel:
Asp-Datei
<asp:Button ID="Button1" runat="server" Text="Button1" />
<asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button2_Click" />
<script type="text/javascript">
var btn1 = '#<% Button1.ClientID %>';
var btn2 = '#<% Button2.ClientID %>';
$(btn1).click(function(e) {
e.preventDefault();
$(btn2).attr("actIndex", "2");
});
</script>
CodeBehind-Datei
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
Button2.Attributes.Add("actIndex","1");
}
protected void Button2_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
//this should be 2 if button1 has been clicked
string actIndex = btn.Attributes["actIndex"];
}
Wenn ich auf Button1
dann klicke ich Button2
die actIndex
- Wert ist immer noch "1" aber wenn ich die Seite untersuchen die Button2
actIndex
Attribut ist "2", irgendwie ist der Attribut-Wert wird nicht übergeben zu postBack-Aktion.
Wie kann ich das lösen dieses Rätsel?
InformationsquelleAutor Ceparu Stefan | 2014-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, das problem, das Sie haben ist, da die Attribute nicht zurück gesendet haben, dass Ihre Angaben umgebaut server-Seite.
Status des Steuerelements ist die integrierte server-Seite gespeichert und in der
ViewState
bevor es serviert die Seite. Dann ändern Sie den Wert mit javascript, das keinen Effekt hat, weil das vaule nicht veröffentlicht werden zurück an den server. Beim PostBack, der server erstellt die Kontrolle aus der bekanntenViewState
die hat die Voreinstellung, die Sie ursprünglich zugewiesen, die dem Wert1
.Dies zu umgehen, müssen Sie speichern den Wert in irgendeine Art von Kontrolle (denken eine
HiddenField
Kontrolle) zu bekommen, die ein Postback an den server und erstellen Sie das Attribut server-Seite.z.B. (halb-pseudo-code):
Benötigt Ihr Steuerelement in die Hand genommen werden, wenn Sie die Modifizierung, die es der client-Seite mit javascript.
Lassen Sie mich wissen, wenn es nicht funktioniert (ich habe es getestet und es sollte wenn). Auch, wenn diese Antwort oder irgendeine andere Ihnen geholfen haben, vergessen Sie nicht, upvote / die akzeptierten Antwort. Und willkommen SO 🙂
Ihre Methode funktioniert. Aber ich bin mir nicht sicher, ob dies der beste Weg, das zu erreichen, was ich fragte, so dass es wäre nicht fair, markieren Sie Ihren Beitrag als Antwort. Ich habe versucht, geben Sie Ihrem Beitrag ein upvote, aber es lässt mich nicht, weil ich bin neu auf dieser Seite und ich habe nicht genug Punkte. Trotzdem bin ich mit dieser Lösung, bis ich gefunden einen besseren.
Hast du am Ende die Suche nach einer anderen Lösung?
InformationsquelleAutor Kelsey
nur Formular-Elemente können tatsächlich die postback-Daten. Die server-Seite werden, nehmen Sie die postback-Daten und laden Sie Sie in das form-element bereitgestellt, das runat=server gesetzt ist.
in markup oder html:
javascript:
code hinter:
InformationsquelleAutor JJ_Coder4Hire
KEINE Notwendigkeit für Javascript-code unten wird für Sie arbeiten
InformationsquelleAutor Kandarp Vyas