我正在尝试使用在ASP.NET中创建异步回发__doPostBack()
,但是我不知道该怎么做。我想使用香草JavaScript。
诸如单击按钮之类的简单操作可能导致__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>
然后在您的代码后面添加如下代码以读取值并对其进行操作:
public void Page_Load(object sender, EventArgs e)
{
string parameter = Request["__EVENTARGUMENT"]; // parameter
// Request["__EVENTTARGET"]; // btnSave
}
试试看,让我们知道是否适合您。
这也是使服务器端控件在FancyBox和/或jQuery Dialog中回发的好方法。例如,在FancyBox-div中:
<asp:Button OnClientClick="testMe('param1');" ClientIDMode="Static" ID="MyButton" runat="server" Text="Ok" >
</asp:Button>
JavaScript:
function testMe(params) {
var btnID= '<%=MyButton.ClientID %>';
__doPostBack(btnID, params);
}
服务器端Page_Load:
string parameter = Request["__EVENTARGUMENT"];
if (parameter == "param1")
MyButton_Click(sender, e);
这是有关工作原理的简短教程__doPostBack()
。
老实说,我使用的并不多;至少直接。许多服务器控件(例如,Button
,LinkButton
,ImageButton
,的部分GridView
等)使用__doPostBack
他们的回传机制。
我只想在的帖子中添加一些内容asp:button
。我尝试了clientId,但它似乎对我不起作用:
__doPostBack('<%= btn.ClientID%>', '');
但是,获取UniqueId似乎回发到服务器,如下所示:
__doPostBack('<%= btn.UniqueID%>', '');
这可能会在将来对其他人有所帮助,因此将其发布。
老问题了,但是我想补充一点:调用时doPostBack()
,可以使用服务器处理程序方法进行操作。
例如:
__doPostBack('<%= btn.UniqueID%>', 'my args');
将在服务器上触发:
protected void btn_Click(object sender, EventArgs e)
我没有找到一种更好的方法来论证,因此我仍在使用Request["__EVENTARGUMENT"]
。
就像其他人所说的那样,您需要向__doPostback()方法提供控件的UniqueID。
__doPostBack('<%= btn.UniqueID %>', '');
在服务器上,提交的表单值由页面中字段的名称属性标识。
之所以能使用UniqueID,是因为当服务器控件以HTML呈现时,UniqueID和名称实际上是同一件事。
这是描述什么是UniqueID的文章:
UniqueID属性还用于为输入字段(复选框,下拉列表和隐藏字段)的HTML“名称”属性提供值。UniqueID在回发中也起主要作用。支持回发的服务器控件的UniqueID属性为__EVENTTARGET隐藏字段提供数据。然后,ASP.NET运行时使用__EVENTTARGET字段来查找触发回发的控件,然后调用其RaisePostBackEvent方法。
src:https:
//www.telerik.com/blogs/the-difference-between-id-clientid-and-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);
}
文章标签:asp.net , c# , javascript , postback
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!