onserverclick事件在C#中使用html构建器无法正常工作

时间:2015-07-08 12:23:48

标签: javascript c# html asp.net

我正在使用锚标记,我想在点击锚标记上触发事件。但遗憾的是它无效。这是我的代码:

html.Append("<a id='dltTag'  class='ca_quy_e' runat='server' onserverclick='Delete_Click'>");
            html.Append("<i class='fa'>");
            html.Append("</i>");
            html.Append("</a>");

protected void Delete_Click(object sender, EventArgs e)
{
      //My code
}

每一件像桌子一样完美的东西都在形成,但只有onserverclick无法正常工作。

1 个答案:

答案 0 :(得分:0)

你必须使用javascript或jQuery,即从客户端调用服务器端方法的客户端脚本

一个。使用wemethod属性创建方法

[WebMethod]
    public static string IsExists(string value)
    {
        //code to check uniqe value call to database to check this
        return "True";
    }

湾使用元素注册客户端调用

    protected void Page_Load(object sender, EventArgs e)
     {
          if (!IsPostBack)
               txtData.Attributes.Add("onblur", "focuslost()");
     }

℃。利用jquery Ajax

function IsExists(pagePath, dataString, textboxid, errorlableid) {

$.ajax({
     type:"POST",
     url: pagePath,
     data: dataString,
     contentType:"application/json; charset=utf-8",
     dataType:"json",
     error:
          function(XMLHttpRequest, textStatus, errorThrown) {
               $(errorlableid).show();
               $(errorlableid).html("Error");
          },
     success:
          function(result) {
               var flg = true;
               if (result != null) {
                    flg = result.d;
                    if (flg == "True") {
                         $(errorlableid).show();
                    }
                    else {
                         $(errorlableid).hide();
                    }
          }
     }
    });
}
function focuslost() {
     var pagePath = window.location.pathname + "/IsExists";
     var dataString = "{ 'value':'" + $("#<%= txtData.ClientID%>").val() + "' }";
     var textboxid = "#<%= txtData.ClientID%>";
     var errorlableid = "#<%= lblError.ClientID%>";
     IsExists(pagePath, dataString, textboxid, errorlableid);
}

如果你没有得到这里是完整的文章:Calling Server Side function from Client Side Script

如果您使用的是scriptmanager,则可以使用此Execute server side code from JavaScript using Script Manager

您需要使用_dopostBack进行psotbacking到服务器或使用ajax来调用服务器端方法

读: Usage of doPostBack in a Real Environment

示例

html.Append("<a id='dltTag'  class='ca_quy_e' runat='server' onclick='DoPostBack()'>");
            html.Append("<i class='fa'>");
            html.Append("</i>");
            html.Append("</a>");

function DoPostBack() 
{
  __doPostBack('DeleteButton','');     
}