Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用uu doPostBack()_C#_Javascript_Asp.net_Postback - Fatal编程技术网

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呈现时,UniqueIDname实际上是一样的

这里有一篇文章描述了什么是唯一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);               
    }