Създавам приложение, използващо ASP.Net, в което имам HTML бутон на 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" />
Но когато щракна върху бутона, тогава той не извиква събитието btnSubmit_ServerClick на aspx.cs страницата.
Не искам да използвам бутон за контрол на asp.
Моля помогнете..
Отговори:
32 за отговор № 1Ако сте съгласни с превръщането на бутона за въвеждане в контрол на сървъра, посочете runat="server"
и използвате asp.net
, опция може да се използва HtmlButton.OnServerClick Имот.
<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" />
Това трябва да работи и да се обажда foo_OnClick
в кода на сървъра. Също така забележете, че на базата на документацията на Microsoft, свързана по-горе, трябва да можете да използвате и етикета HTML 4.0.
4 за отговор № 2
На вашата aspx страница определете елемента Бутон HTML с обичайните заподозрени: runat, class, title и т.н.
Ако този елемент е част от обвързан с данни контрол (т.е.: изглед на мрежата и т.н.), може да искате да използвате CommandName и вероятно CommandArgument като атрибути. Добавете съдържанието на бутона и затварящия маркер.
<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>
На кода зад страницата елементът ще извика манипулатора, който ще бъде дефиниран като функцията ID_Click на елемента.
protected void cmdAction_Click(object sender, EventArgs e)
{
: do something.
}
Има и други решения, както при използването на персонализирани контроли и т.н. Също така имайте предвид, че използвам този проект на живо в проекти в VS2K8.
Надявайки се това да помогне. Наслади се!
2 за отговор № 3
Най-лесният начин да постигнете това е да отмените метода RaisePostBackEvent.
<input type="button" ID="btnRaisePostBack" runat="server" onclick="raisePostBack();" ... />
И в JavaScript:
raisePostBack = function(){
__doPostBack("<%=btnRaisePostBack.ClientID%>", "");
}
И във вашия код:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
//call the RaisePostBack event
base.RaisePostBackEvent(source, eventArgument);
if (source == btnRaisePostBack)
{
//do some logic
}
}
0 за отговор № 4
Моля, следвайте този урок: http://decoding.wordpress.com/2008/11/14/aspnet-how-to-call-a-server-side-method-from-client-side-javascript/
На SIDOTE: ASP.NET генерира javascript функцията на клиентската страна, която можете да извикате от собствените си функции, за да изпълните желаната от вас обратна връзка.
- Повече информация за отвличането на събитието след завръщането:
- http://msdn.microsoft.com/en-us/library/aa720099(vs.71).aspx
- http://wiki.asp.net/page.aspx/1082/dopostback-function/
- http://geekswithblogs.net/mnf/archive/2005/11/04/59081.aspx
0 за отговор № 5
просто използвайте това в края на вашето събитие при натискане на бутон
protected void btnAddButton_Click(object sender, EventArgs e)
{
... save data routin
Response.Redirect(Request.Url.AbsoluteUri);
}
0 за отговор № 6
Можете да използвате сървъра за събития, като кликнете по-долу
// cmdAction е id на HTML бутона, както е показано по-долу
<body>
<form id="form1" runat="server">
<button type="submit" id="cmdAction" text="Button1" runat="server">
Button1
</button>
</form>
</body>
// 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");
}
}