我很难用ASP.NET组件绕过AutoPostBack,并希望有人能提供帮助。我查看了多个查询,但没有任何帮助。
我的页面上有一个“提交”按钮,点击后应该做两件事:
1.运行服务器端C#函数,更新div标签中的一堆<asp:Labels
2.运行javascript动画,移动内容并使<div
标记可见。
我的功能本身就可以正常工作,但我的问题是自动回复。如果我使用<asp:Button
回发刷新并且javascript动画随之撤消。如果我使用<input type="button"
标记,则无法同时运行C#和Javascript函数。我尝试了以下内容:
<input type="button" runat="server" onclick="c#function" onclientclick="javascriptFunction(); return false;"
** runat =“server”似乎只是在该按钮上启用回发
<asp:Button
** C#函数使用Page.ClientScript.RegisterStartupScript来调用javascript函数,但回发会使动画失效。
我希望保留javascript动画,因为它们使界面非常干净和直观,因此非常感谢任何保持它的帮助。有什么建议吗?
答案 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不是必需的