Asp.net OnClientClick中的服务器标记

Asp.net OnClientClick中的服务器标记,asp.net,Asp.net,下面给出了一个错误“服务器标记的格式不正确” 删除 (这在显示用户列表的数据绑定列表视图中使用。当您单击删除按钮时,JavaScript确认对话框用于询问您是否确定) 那么,如何在包含JavaScript的字符串中嵌入服务器标记呢?您可以在运行时添加onclick事件,如下所示: DeleteButton.Attributes.Add("onclick", "'return confirm('Are you sure you want to delete '" + Username); 在

下面给出了一个错误“服务器标记的格式不正确”


删除
(这在显示用户列表的数据绑定列表视图中使用。当您单击删除按钮时,JavaScript确认对话框用于询问您是否确定)


那么,如何在包含JavaScript的字符串中嵌入服务器标记呢?

您可以在运行时添加onclick事件,如下所示:

DeleteButton.Attributes.Add("onclick", "'return confirm('Are you sure you want to delete '" + Username);


在ListView控件的ItemDataBound事件中动态添加代码

在页面加载事件中添加以下内容

lst.ItemDataBound += new EventHandler<ListViewItemEventArgs>(lst_ItemDataBound);

无论您使用OnClientClick还是Sachin Gaur的解决方案,此解决方案都应该有效。

问题在于绑定块以及单引号和双引号的使用

<asp:LinkButton D="DeleteButton" runat="server" CommandName="Delete" OnClientClick='<%# CreateConfirmation(Eval("Username")) %>'>Delete</asp:LinkButton>

当绑定块用作属性的值时,您会注意到必须使用单引号。脚本还需要为confirm函数的嵌入字符串参数加引号。基本上你的报价已经用完了。

我在www.asp.net上找到了这个答案

OnClientClick='<%# Eval("ProductName", "return confirm(""Delete the Product {0}?"")" ) %>'
OnClientClick=''

这会将所有内容都放在标记中,这样以后进行维护的任何人都不必到处寻找所有内容。

如果此按钮有服务器端事件,我相信此策略会将“onclick”添加到HTML元素两次,从而导致意外行为。不,它不会添加。服务器端事件将有一些\uu dpPostBack。。。呼叫您可以添加属性并查看页面源。遗憾的是,我不能这样做-因为此控件是数据绑定ListViewMy Error的一部分。。。对不起,我肯定我以前也有过这个问题。我想我没有做出正确的区分。我想,您可以在列表绑定事件中执行此操作,因为我们有GridView的RowDataBound事件。遗憾的是,我无法执行此操作,因为此控件是数据绑定事件的一部分ListView@RichardE-如果我理解正确,它应该在您的“E”参数中。@Richard E-我已经调整了答案,以帮助您找到按钮。我认为我们应该被罢免。谢谢。请注意CreateConfirmation(Eval(“Username”))应该写为CreateConfirmation((string)Eval(“Username”))(我使用的是C#…可能是VB.NET自动强制转换从Eval返回的对象)如果使用的是C#,您只需将“Username”参数类型对象与字符串相对,你也不需要卡斯特,这几乎是正确的。OnClientClick=''或OnClientClick=''对我有效;基本上,最里面的双引号是C#字符串中的双引号,应该相应地转义。
<asp:LinkButton D="DeleteButton" runat="server" CommandName="Delete" OnClientClick='<%# CreateConfirmation(Eval("Username")) %>'>Delete</asp:LinkButton>
Public Function CreateConfirmation(ByVal Username As String) As String
    Return String.Format("return confirm('Are you sure you want to delete {0}?');", Username)
End Function
OnClientClick='<%# Eval("ProductName", "return confirm(""Delete the Product {0}?"")" ) %>'