在我的javascript
文件中,我获得了一个ajax来获取所有列表并迭代这些数据并将<a id='userID' class='btn'>Assign ID<>
附加到我的列表中。
那么,如何将回发添加到这些锚点并将其重定向到服务器中的方法中。下面是我的代码,但没有用。当我单击achor按钮时,它只是重定向/刷新到同一页面而不进行任何更改,并且没有显示文本。
<a id='uniqueID' class='btn assignID' href='javascript:void(0);' onclick='javascript:__doPostBack('uniqueID','')'>Assign ID</a>
protected void Action_assignID(object sender, EventArgs e)
{
// assign ID action
Response.Write("Pass");
}
答案 0 :(得分:1)
您应该将按钮更改为:
<a id='uniqueID' class='btn assignID' href='javascript:void(0);' onclick="javascript:__doPostBack('uniqueID','Assign ID')">Assign ID</a>
在代码隐藏中实现IPostBackEventHandler接口是一个好主意,如下所示:
public partial class WebForm : Page, IPostBackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
}
}
public void RaisePostBackEvent(string eventArgument)
{
// do somethings at here
}
}
希望这有帮助!
答案 1 :(得分:0)
__doPostBack
方法确实没有做任何特别的事情,除了......好吧......用两个特定的表单参数执行POST操作回到同一页面。
第一个参数是__EVENTTARGET
,第二个参数是__EVENTARGUMENT
。
魔术都发生在ASP.Net中,它自动将控件连接到事件处理程序,但由于您完全使用JavaScript创建这些控件,因此服务器不知道存在这些控件。
但是,您可以手动获取这些值并对其执行某些操作。
//Client Side JavaScript:
__doPostBack('my-event', '42');
//Code Behind
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
var target = Request.Params["__EVENTTARGET"];
var args = Request.Params["__EVENTARGUMENT"];
Target.Text = target; // 'my-event'
Argument.Text = args; // '42'
}
}