C# 如何使用uu doPostBack()
我正在尝试使用C# 如何使用uu doPostBack(),c#,javascript,asp.net,postback,C#,Javascript,Asp.net,Postback,我正在尝试使用\uu doPostBack()在ASP.NET中创建一个异步回发,但我不知道怎么做。我想使用香草JavaScript 单击按钮之类的简单操作会触发\u doPostBack()事件。我只是想了解这个机制是如何工作的。这里有一个关于\uu doPostBack()工作原理的示例 老实说,我不怎么用它;至少是直接的。许多服务器控件(例如,按钮,链接按钮,图像按钮,网格视图的部分等)使用\u doPostBack作为其回发机制。您可以在web表单中使用名为btnSave的按钮来尝试此操
\uu doPostBack()
在ASP.NET中创建一个异步回发,但我不知道怎么做。我想使用香草JavaScript
单击按钮之类的简单操作会触发\u doPostBack()
事件。我只是想了解这个机制是如何工作的。这里有一个关于\uu doPostBack()
工作原理的示例
老实说,我不怎么用它;至少是直接的。许多服务器控件(例如,
按钮
,链接按钮
,图像按钮
,网格视图
的部分等)使用\u doPostBack
作为其回发机制。您可以在web表单中使用名为btnSave的按钮来尝试此操作,例如:
<input type="button" id="btnSave" onclick="javascript:SaveWithParameter('Hello Michael')" value="click me"/>
<script type="text/javascript">
function SaveWithParameter(parameter)
{
__doPostBack('btnSave', parameter)
}
</script>
尝试一下,让我们知道这是否对您有效。这也是让服务器端控件在FancyBox和/或jQuery对话框中发回的好方法。 例如,在FancyBox div中:
<asp:Button OnClientClick="testMe('param1');" ClientIDMode="Static" ID="MyButton" runat="server" Text="Ok" >
</asp:Button>
我想在这篇文章中添加一些内容,用于
asp:button
。我试过clientId,但它似乎对我不起作用:
__doPostBack('<%= btn.ClientID%>', '');
uu doPostBack(“”,”);
但是,获取UniqueId似乎会发回服务器,如下所示:
__doPostBack('<%= btn.UniqueID%>', '');
uu doPostBack(“”,”);
这可能会在将来帮助其他人,因此会发布此消息。旧问题,但我想补充一点:调用
doPostBack()
时,可以使用服务器处理程序方法执行此操作
例如:
__doPostBack('<%= btn.UniqueID%>', 'my args');
我没有找到更好的获取参数的方法,所以我仍然使用
Request[“\uu EVENTARGUMENT”]
正如其他人所说,您需要向u doPostback()方法提供控件的唯一ID
uu doPostBack(“”,”);
在服务器上,提交的表单值由页面中字段的name属性标识
UniqueID之所以有效,是因为当服务器控件以HTML呈现时,UniqueID和name实际上是一样的
这里有一篇文章描述了什么是唯一ID:
UniqueID属性还用于为HTML提供值
输入字段的“名称”属性(复选框、下拉列表和
隐藏字段)。UniqueID在回发中也扮演着重要角色。这个
支持回发的服务器控件的UniqueID属性,
提供uuu EVENTTARGET隐藏字段的数据。ASP.NET运行时
然后使用_EVENTTARGET字段查找触发
然后调用其RaisePostBackEvent方法
src:
我就是这样做的
public void B_ODOC_OnClick(Object sender, EventArgs e)
{
string script="<script>__doPostBack(\'fileView$ctl01$OTHDOC\',\'{\"EventArgument\":\"OpenModal\",\"EncryptedData\":null}\');</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(),"JsOtherDocuments",script);
}
public void B_ODOC_OnClick(对象发送方,事件参数e)
{
字符串脚本=“\uuu doPostBack(\'fileView$ctl01$OTHDOC\',\'{\'EventArgument\':\'OpenModal\',\'EncryptedData\':null}\');”;
Page.ClientScript.RegisterStartupScript(this.GetType(),“JsOtherDocuments”,脚本);
}
First of all的可能重复\uuuu doPostBack不会导致异步操作,除非它是由UpdatePanel内的控件触发的。为什么会标记并删除它。我理解该部分,但不理解该部分。@Solomon Ucko-因为_doPostBack()导致页面发布到其服务器端实现,这很可能是在C#(可能是VB.NET)中,而它通常工作时,实际上不支持手动插入\u_doPostBack
。如果页面上没有触发回发的内容,asp.net可能会忽略定义\uu doPostBack
函数。支持的方法是调用ClientScriptManager.GetPostBackEventReference
,它以\uuuDoPostBack(…)
的形式返回一个字符串,并确保定义了\uuDoPostBack
。简单地问一下,\uuEventArgument将是参数还是btnSave?它是参数__EVENTTARGET将为您提供按钮。如果我有两个或多个按钮可以执行u doPostBack,那么如何在服务器端的页面u load()中区分它们。当我有多个参数时会发生什么情况?@Wilson认为您的参数可能是Json数据,可以映射到C#中的对象,然后,您可以使用Json.net对对象进行反序列化/序列化,等等。快进6年后;如果我还用这个,我会很震惊。web开发的方法通常已经摆脱了使用这种东西的思维方式。@Phil-哈哈,我昨天读了这篇文章,同时看到了一个实现它的bug:)在今天,它看起来确实很过时,而且快进了6年。。。而ASP.NET Web表单仍然可以做到这一点。因此,被接受的答案以压倒性优势获得了支持。@kbrimington:我没有说ASP.NET不会“仍然这样做”。我不期望它有多大变化。我的意思是,使用ASP.NET WebForm进行新开发的人越来越少,其他人也在迁移。是的,我在使用ClientID
时遇到了问题,因为我使用的是clientMode=Static
。使用UniqueID
有效。我一直在努力让它发挥作用,ClientID和UniqueID对我都不起作用。天哪!用几天的时间来解决这个问题。UniqueID确实解决了这个问题。谢谢你,伙计!应该使用UniqueID,而不是ClientID。或者设置MyButton
的clientMode=“Static”
属性,以便ASP不会损坏按钮的ID。
__doPostBack('<%= btn.UniqueID%>', '');
__doPostBack('<%= btn.UniqueID%>', 'my args');
protected void btn_Click(object sender, EventArgs e)
__doPostBack('<%= btn.UniqueID %>', '');
public void B_ODOC_OnClick(Object sender, EventArgs e)
{
string script="<script>__doPostBack(\'fileView$ctl01$OTHDOC\',\'{\"EventArgument\":\"OpenModal\",\"EncryptedData\":null}\');</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(),"JsOtherDocuments",script);
}