/ / wywołanie zdarzenia po stronie serwera z kontroli przycisku HTML - asp.net, html

wywołanie zdarzenia po stronie serwera z kontroli przycisku HTML - asp.net, html

Tworzę aplikację przy użyciu ASP.Net, w której mam przycisk HTML na stronie aspx.

<input type="submit" id="btnSubmit" runat="server"
style="background-image:url(App_Themes/default/Images/quiz_class/btn_submit.jpg);
width:80px; height:29px;" onserverclick="btnSubmit_ServerClick" />

Ale gdy klikam przycisk, nie wywołuje on zdarzenia btnSubmit_ServerClick na stronie aspx.cs.

Nie chcę używać przycisku sterowania asp.

Proszę pomóż..

Odpowiedzi:

32 dla odpowiedzi nr 1

Jeśli możesz, możesz przekonwertować przycisk wejściowy na kontrolkę po stronie serwera, określając runat="server"i używasz asp.net, opcja może używać HtmlButton.OnServerClick własność.

<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" />

To powinno zadziałać i zadzwonić foo_OnClick w kodzie po stronie serwera. Zauważ również, że na podstawie dokumentacji Microsoft powiązanej powyżej, powinieneś być również w stanie używać tagu HTML 4.0.


4 dla odpowiedzi nr 2

Na stronie aspx zdefiniuj element przycisku HTML ze zwykłymi podejrzanymi: runat, klasa, tytuł itp.

Jeśli ten element jest częścią kontroli powiązania danych (tj. Widok siatki itp.), Możesz użyć nazwy poleceń i ewentualnie CommandArgument jako atrybutów. Dodaj zawartość przycisku i znacznik zamknięcia.

<button id="cmdAction"
runat="server" onserverclick="cmdAction_Click()"
class="Button Styles"
title="Does something on the server"
<!-- for databound controls -->
CommandName="cmdname">
CommandArgument="args..."
>
<!-- content -->
<span class="ui-icon ..."></span>
<span class="push">Click Me</span>
</button>

W kodzie za stroną element wywołuje procedurę obsługi, która byłaby zdefiniowana jako funkcja zdarzenia ID_Click elementu.

protected void cmdAction_Click(object sender, EventArgs e)
{
: do something.
}

Istnieją inne rozwiązania, takie jak używanie niestandardowych elementów sterujących itp. Również zauważ, że używam tego na żywo w projektach w VS2K8.

Mam nadzieję, że to pomoże. Cieszyć się!


2 dla odpowiedzi nr 3

Najłatwiejszym sposobem osiągnięcia tego jest zastąpienie metody RaisePostBackEvent.

<input type="button" ID="btnRaisePostBack" runat="server" onclick="raisePostBack();" ... />

W twoim JavaScript:

raisePostBack = function(){
__doPostBack("<%=btnRaisePostBack.ClientID%>", "");
}

I w twoim kodzie:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
//call the RaisePostBack event
base.RaisePostBackEvent(source, eventArgument);

if (source == btnRaisePostBack)
{
//do some logic
}
}

0 dla odpowiedzi nr 4

Postępuj zgodnie z tym samouczkiem: http://decoding.wordpress.com/2008/11/14/aspnet-how-to-call-a-server-side-method-from-client-side-javascript/

W komentarzu: ASP.NET generuje funkcję javascript po stronie klienta, którą można wywołać z własnych funkcji, aby wykonać żądaną wiadomość zwrotną.

- Więcej informacji na temat przejęcia kontroli nad postem:


0 dla odpowiedzi № 5

po prostu użyj tego na końcu zdarzenia kliknięcia przycisku

protected void btnAddButton_Click(object sender, EventArgs e)
{
... save data routin
Response.Redirect(Request.Url.AbsoluteUri);
}

0 dla odpowiedzi № 6

Możesz użyć serwera obsługi zdarzeń jak poniżej

// cmdAction to id przycisku HTML, jak poniżej

<body>
<form id="form1" runat="server">
<button type="submit" id="cmdAction" text="Button1" runat="server">
Button1
</button>
</form>
</body>

// kod cs

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
cmdAction.ServerClick += new EventHandler(submit_click);
}

protected void submit_click(object sender, EventArgs e)
{
Response.Write("HTML Server Button Control");
}
}