c# - 如何使用 javascript 将 C# 变量分配给 asp 元素

标签 c# javascript asp.net variables

我想使用 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/

相关文章:

javascript - 检查可能 undefined object 属性的最佳方法

javascript - ASP :Repeater min and max

asp.net - 隐藏 gridview 但显示分页/页面链接?

c# - 如何将文件路径从我的代码中取出并放入 mysql 的插入语句中?

c# - 有没有办法在不选择 'Allow less secure apps' 选项的情况下使用 ASP.NET 通过 Google Apps 帐户发送电子邮件?

c# - JsonUtility 如何将 json 换行

c# - #botframework 依赖注入(inject)

javascript - 奇怪的数据表排序和按键行为

c# - 从 DataTable 中删除特定行

c# - 工厂反射(reflection)是一种好的做法吗?