【问题标题】:Master Pages Controls Id After Rendered渲染后的母版页控件 ID
【发布时间】:2011-09-28 20:41:37
【问题描述】:

在我的 asp.net 项目中,有一个母版页,并且 Contentplaceholder1 上有一个控件。在我的本地呈现像“ctl00_Contentplaceholder1_control”之后更改此控件的 ID。但在服务器上,它的变化就像“Contentplaceholder1_control”。当我使用documents.getelelentbyid('ctl00_Contentplaceholder1_control') js 函数时,它在我的本地工作,但在服务器上不工作。那么为什么app在服务端运行时会消失“ctl00_”呢?

编辑:

为什么渲染后服务端控件id不包含“ctl00_”?

【问题讨论】:

    标签: javascript .net asp.net vb.net master-pages


    【解决方案1】:

    使用服务器端属性 ClientID 获取适当的 ID,或者如果您使用 .NET 4,请使用 ClientIDMode

    【讨论】:

      【解决方案2】:

      为什么不使用 ClientIDMode 来制作静态 ID?您使用的是哪个版本的 .NET Framework?

      另一个选项(对于旧版本)是将您的 .NET 控件包装在具有静态 id 的 div 中,然后像这样使用 jQuery:

       var wrapper = $('#wrapperDivId');
       var control = wrapper.find('typeOfControl')[0];
      

      这样,无论您的控件的 id 是如何呈现的,您都可以随时访问它。

      例如,TextBoxes 呈现为<input type='text' />。现在你可以像这样将你的文本框包裹在一个 div 中:

       <div id='wrapper'>
            <asp:TextBox ID='firstName' runat='server' />
       </div>
      

      现在,无论客户端 ID 是什么,您都可以使用以下命令在客户端获取文本框:

       $('#wrapper input')
      

      【讨论】:

      • 我正在使用 .Net 框架 3.5。我还没试过,我试试。但我必须说这个控件是一个用户控件中的 iframe,它的打开就像弹出一样。是否可以使用 ClientIDMode ?
      • 不,ClientIDMode 是 .NET 4 的新功能。它不在 3.5 版中。我建议包装控件。 :)
      【解决方案3】:

      你应该这样做......

      documents.getElelentbyid('<%=ControlID.ClientID %>') 
      

      【讨论】:

        【解决方案4】:
        document.getElementById("<%= control.ClientID %>");
        

        这比硬编码客户端 ID 更安全、更好。

        【讨论】:

        • Control 是用户控件中的 iframe。用户控件像弹出窗口一样打开。当我在此弹出窗口中选择某些内容时,它会更改页面上的内容。当我使用“”时,还有另一个错误。它说你不能改变 blah blah...
        • 您必须将“控件”替换为控件的服务器端 ID。要更进一步,您必须提供更多代码让我们更好地理解结构。
        • 为什么服务端控件id渲染后不包含“ctl00_”?
        【解决方案5】:

        Answer is here.

        我的托管服务器将其 asp.net 服务器更改为 asp.net 4 服务器。所以我的控件在没有“ctl00_”的情况下呈现。我将我的 .net 3.5 项目编译为 .net 4 和 I changed web.config file like this

        现在它可以工作了。

        【讨论】:

          猜你喜欢
          • 2019-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-07
          相关资源
          最近更新 更多