我想使用 javascript 将 csharp 变量分配给 asp 页面的元素。看来该作业在我的代码中不起作用。
这里是:
document.getElementById('lbAccessories').innerHTML = '<%#SelectLabel%>';
在我的 asp 代码中我使用:
<asp:LinkButton ID="lbAccessories" runat="server" />'
我无法使用 Text='<%#SelectLabel%>'
直接将值分配给链接按钮因为我想让它变得更加智能。
有人知道该怎么做吗?
谢谢
编辑:
这是我的代码,我尝试使用 <%=lbAccessories.clientId%>
,但它会生成错误:上下文中不存在 lbAccessories。
<script type="text/javascript">
function function(Ref) {
if ('<%=TextBoxClientID%>' == 'txtLink')
{
document.getElementById('lbAccessories').innerHTML = '<%#SelectLabel%>';
}
else if ('<%=TextBoxClientID%>' == 'btnSearch') {
document.getElementById('lbAccessories').innerHTML = '<%#ViewDetail%>';
}
}
</script>
编辑:
<asp:GridView ID="gv1" AutoGenerateColumns="false" runat="server"
AllowPaging="true" OnPageIndexChanging="pic">
<Columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:LinkButton ID="lbAccessories" runat="server" OnClientClick='<%#string.Format("passAccessory(\"{0}\");", Eval("Ref"))%>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
编辑:
非常感谢所有提出建议的人。
我已将 JavaScript 代码更改为以下内容:
<script type="text/javascript">
function passAccessory(accessoryRef) {
if ('<%=TextBoxClientID%>' == 'txtLink') {
document.getElementById('<%= gvAccessories.FindControl("lbAccessories").ClientID %>').innerHTML = '<%#SelectLabel%>';
}
else if ('<%=TextBoxClientID%>' == 'btnSearch') {
document.getElementById('<%= gvAccessories.FindControl("lbAccessories").ClientID %>').innerHTML = '<%#ViewDetail%>';
}
}
</script>
在 *.aspx.cs
文件,我添加了:protected LinkButton lbAccessories { get; set; }
它抛出异常:
Object reference not set to an instance of an object
有人有想法吗?非常感谢
编辑:
最后,我们用 csharp 代码做到了。它更加灵活且易于管理。我的同事帮助了我。谢谢大家的帮助!!!
最佳答案
检查输出 HTML anchor 的 ID 是否确实是您要查找的内容。无论如何,您应该使用 <%= lbAccessories.ClientID %>
而不是从客户端脚本引用服务器 ID。
如果您出于某种原因不想(或不能)使用<%= lbAccessories.ClientID %>
然后查看以下有关 jQuery 插件的文章,该插件允许您通过服务器 ID 获取 DOM 元素:
http://radek-stromsky.blogspot.com/2010/11/aspnet-how-to-get-client-id-with-jquery.html
编辑:
我对您的代码做了一些更改:
<script type="text/javascript">
function passAccessory(Ref) {
if ('<%= TextBoxClientID %>' == 'txtLink')
{
document.getElementById('<%= GridView1.FindControl("lbAccessories").ClientID %>').innerHTML = '<%# SelectLabel %>';
}
else if ('<%= TextBoxClientID %>' == 'btnSearch') {
document.getElementById('<%= GridView1.FindControl("lbAccessories").ClientID %>').innerHTML = '<%#ViewDetail%>';
}
}
</script>
<asp:LinkButton ID="lbAccessories" runat="server" OnClientClick='<%#string.Format("passAccessory(\"{0}\");", Eval("Ref"))%>'></asp:LinkButton>
编辑:编辑:
我修复了上面的代码。现在有GridView1.FindControl("lbAccessories")
关于c# - 如何使用 javascript 将 C# 变量分配给 asp 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324238/