C#函数然后Javascript函数事件(ASP.NET)

时间:2011-12-13 16:08:10

标签: c# javascript asp.net

我很难用ASP.NET组件绕过AutoPostBack,并希望有人能提供帮助。我查看了多个查询,但没有任何帮助。

我的页面上有一个“提交”按钮,点击后应该做两件事:
1.运行服务器端C#函数,更新div标签中的一堆<asp:Labels 2.运行javascript动画,移动内容并使<div标记可见。

我的功能本身就可以正常工作,但我的问题是自动回复。如果我使用<asp:Button回发刷新并且javascript动画随之撤消。如果我使用<input type="button"标记,则无法同时运行C#和Javascript函数。我尝试了以下内容:

  1. <input type="button" runat="server" onclick="c#function" onclientclick="javascriptFunction(); return false;"
    ** runat =“server”似乎只是在该按钮上启用回发

  2. <asp:Button
    ** C#函数使用Page.ClientScript.RegisterStartupScript来调用javascript函数,但回发会使动画失效。

  3. 我希望保留javascript动画,因为它们使界面非常干净和直观,因此非常感谢任何保持它的帮助。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

您可以使用ajax。您可以通过ajax将值传递到服务器页面,并让服务器页面处理(在表中插入记录/向某人发送电子邮件/等等......)并将结果返回给您。直到你得到你的结果。您可以向用户显示“正在处理...”消息。

这是一个具有阻止效果的插件。 http://jquery.malsup.com/block/

以下是如何在ajax(使用jquery)

中执行此操作的一个小示例

HTML

<html>
 <head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>  
  <head>
  <body>
      <input type="button" id="btnGetProd" value="Get Products" /> 
      <div id="divProducts"></div>

<script type="text/javascript">

$("#btnGetProd").click(function(){

    $("#divProducts").html("Processing your request....</div>").fadeIn(100, function ()                         
     {
        $.ajax({
            url: "myajaxserverpage.aspx?mode=getprodcusts&category=3",
            success: function (data) {
                $("#divProducts").html(data).fadeIn(100);
            },
            error: function (req, textStatus, error) {
                alert("Some error occured");

            }

        })
    });
  });
</script>


</body>
  </html>

你应该有一个名为myajaxserverpage.aspx的页面,它返回名为“divProducts”的div的内容(例如:产品列表)

上面代码的作用是,当用户点击按钮时,它会在div中显示文本“Processing your request ...”,然后对aspx页面进行ajax调用。一旦收到响应,它把它放到div然后做一个淡入效果。

答案 1 :(得分:0)

您所经历的是预期的。浏览器将执行javascript,然后向服务器发送请求。服务器处理请求并发送响应。然后客户端将呈现响应。此时,您所做的任何UI更改都将被丢弃,因为收到了新请求。

要解决此问题,您需要将ajax合并到您的页面中。

答案 2 :(得分:0)

满足您需求的替代方式 1.let按钮只做javascript功能 2.let javascript函数完成动画后进行回发 ajax不是必需的