Вызывающее серверное событие из управления кнопками html
Я создаю приложение с использованием 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.
Пожалуйста помоги..
Ответы
Ответ 1
Если вы согласны с преобразованием кнопки ввода в систему на стороне сервера, указав runat="server"
, и вы используете asp.net
, параметр может использовать HtmlButton.OnServerClick.
<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" />
Это должно работать и вызывать foo_OnClick
в коде на стороне сервера.
Также обратите внимание, что на основе документации Microsoft, приведенной выше, вы также можете использовать тег HTML 4.0.
Ответ 2
На странице aspx определите элемент HTML Button с обычными подозреваемыми: 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.
Надеюсь, что это помогает. Наслаждайтесь!
Ответ 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
}
}
Ответ 4
Пожалуйста, следуйте этому руководству: http://decoding.wordpress.com/2008/11/14/aspnet-how-to-call-a-server-side-method-from-client-side-javascript/
На стороне: ASP.NET генерирует функцию javascript на стороне клиента, которую вы можете вызывать из своих собственных функций для выполнения обратной передачи, которую вы хотите.
- Дополнительная информация о захвате события postback:
Ответ 5
просто используйте это в конце события нажатия кнопки
protected void btnAddButton_Click(object sender, EventArgs e)
{
... save data routin
Response.Redirect(Request.Url.AbsoluteUri);
}
Ответ 6
Вы можете использовать обработчик события serverclick как показано ниже
//cmdAction - это идентификатор кнопки 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");
}
}