【问题标题】:Created label dynamically with javascript and get in server side this label使用 javascript 动态创建标签并在服务器端获取此标签
【发布时间】:2013-03-06 15:31:49
【问题描述】:

我是 .NET 开发新手

我在 javascript 中动态创建标签。 按下页面上创建的按钮后。

<label name="lblPerson1" id="lblPerson1" runat="server">Person:</label>

之后我想在服务器端捕获这个标签。

谁来帮帮我!

编辑:

我想要的是能够在您单击按钮时创建一组标签和输入。 (在客户端)然后当您单击另一个按钮以更改标签的文本时(在服务器端)它是可能的吗?

【问题讨论】:

  • 不,你不能这样做......另外,也许你可以有一个 div 或具有 runat="server" 的东西,然后你可以在其中创建该标签。然后在服务器端代码上,您可以执行 DivName.InnerHtml 并查找其内容以查看创建的内容
  • 你为什么要这样做?可能有更好的方法...
  • 你想达到什么目的?如果我们知道您为什么要尝试获取此标签,或许我们可以建议一个替代解决方案?
  • 删除 runat="server" 因为它没有意义 - 您正在客户端 DOM 中添加标签 html 标记。 “在服务器端捕获此标签”是什么意思?是否要获取标签标签之间的文本?
  • @codingbiz 伟大的思想都一样! ;o)

标签: javascript asp.net controls


【解决方案1】:

标签不会作为发布请求的一部分发布到服务器,因为它不是输入控件。

你可以做什么(例如):

  • 有一个 asp.net 隐藏输入控件,使用一些 javascript,在提交表单之前,您将在单击提交按钮时存储标签的 html 标记
  • 或者,在单击提交按钮时,执行一个 post ajax 请求,您将在其中放置标签的 html 标记

顺便说一句,我不明白你将如何使用runat="server",除非你解析 HTML 标记服务器端来生成服务器控件(这对我来说似乎不是一个简单的想法)

希望这会有所帮助

【讨论】:

    【解决方案2】:

    因为这个控件不是在服务端创建的,所以你需要使用 FindControl 方法,像这样:

    使用这样的控件:

        <label name="lblPerson1" id="lblPerson2" runat="server">Person:</label>
    
        Dim myLabel As HtmlGenericControl
        myLabel = Me.lblPerson2
    
        Dim test As String = myLabel.InnerText
    

    让我知道这是否有效。

    【讨论】:

    • 我猜这行不通?因为标签是在客户端创建的,不能在服务器上运行。
    • 不,应该可以。您可以找到在客户端创建的控件。你只需要知道它的ID。这就是 FindControl 方法的用途。让我测试一下,如果它有效,我会发回一个例子
    • 不,我猜不是因为 runat=server 在客户端上创建时不计算事件。就服务器端代码而言,没有什么叫 lblPerson1 因为它不在服务器上运行
    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 2011-02-09
    • 2023-03-14
    • 2023-03-07
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多