[asp.net]onserverclick 事件不工作在 C# 中使用 html 生成器

发布时间: 2017/3/26 3:33:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用锚点标记,我想火上单击锚点标记的事件。但不幸的它不工作。这里是我的代码︰

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:

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

a.创建方法与 wemethod 属性

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

b.注册客户端的调用与元素

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

c.利用 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);
}

如果你没有得到比这里是整篇文章︰从客户端脚本调用服务器端功能

如果您使用 scriptmanager,您可以使用此从 JavaScript 执行服务器端代码使用脚本管理器


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

已阅读︰ doPostBack 在实际环境中的用法

示例

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','');     
}
官方微信
官方QQ群
31647020