ASP.NET:将回发添加到锚点

时间:2017-01-13 02:55:57

标签: c# asp.net

在我的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");
}

2 个答案:

答案 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'
    }
}