我有<ul>
包含这些元素:
<li><a id="testClick" href="#" runat="server" onserverclick="btnSwitch_Click">Click This</a></li>
并且可行,该html元素可以单击服务器端的btnSwitch_Click。 但我尝试新的东西,我从js创建html代码,如下所示:
function updateDDLSheets()
{
var ddlSheets = $('#ulSheetList');
ddlSheets.empty();
$.ajax({
type: "POST",
url: "dashboard.aspx/GetSheetItems",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "JSON",
success: function (msg) {
var txt = msg.d;
var items = eval('(' + txt + ')');
for (var ii = 0; ii < items.length; ii++) {
ddlSheets.append('<li><a href=\"#\" runat=\"server\" onserverclick=\"btnSwitch_Click\" class=\"ddlSheet\" data-sheet=\"' + items[ii].ID + '\" data-mod=\"' + items[ii].Mods_ID + '\">' + items[ii].Name + '</a></li>');
}
}
});
}
我希望这个由js代码创建的html元素可以像第一个html代码一样工作,但是onserverclick没有用。 请帮帮我为什么? 以及如何在该html元素中使用onserverclick可以工作?
答案 0 :(得分:0)
您无法在客户端创建服务器端控件。如果您需要动态创建实际的服务器端控件 - 您可以在服务器端C#/ VB.NET(无论您在ASP.NET中使用什么)代码中执行此操作。但在这种情况下,您还必须在服务器上创建LI元素。
另一种可能性:请注意,ASP.NET呈现服务器端控制:
<a id="testClick" href="#" runat="server" onserverclick="btnSwitch_Click">Click This</a>
作为
<a id="testClick" href="javascript:__doPostBack('testClick','')">Click This</a>
HTML中的。
您可以尝试在客户端“成功”功能中创建第二个元素。完成后调用“__doPostBack”函数。