Подтвердить что ты не робот

Вызывающее серверное событие из управления кнопками 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.

Пожалуйста помоги..

4b9b3361

Ответ 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");
        }
    }