【问题标题】:Input Control type Text Reference In Code Behind代码后面的输入控件类型文本引用
【发布时间】:2013-08-14 21:07:32
【问题描述】:

我有以下代码

  <input runat="server" id="Name" type="text" name="Name"/>


    cmd.parameters.addwithvalue("@NAME", Name.value);

我正在尝试捕获我在控件中输入的数据,并且 (Name.value) 始终等于“” 不管我输入什么。我知道它们被正确映射,就好像我将它切换到一个文本框它工作正常我想让这个输入也能正常工作。

已编辑 这似乎行不通,不确定这是否是正确的方法,但是有什么理由可以这样做,但 Name.value 不行吗?

cmd.Parameters.AddWithValue("@NAME", Request.Form["Name]);

【问题讨论】:

    标签: c# asp.net html


    【解决方案1】:

    如果你想在后面的代码中使用 html 元素,你必须添加 runat=server 属性。

    <input runat="server" id="Name" type="text" name="Name" ClientIdMode="static"/>
    

    ClientIdMode 设置为static 应该允许您在后面的代码中使用与html 中相同的ID,只是要注意不要产生冲突。

    名称将被转换为HtmlInputControl,当页面回发时,Name.Value 将具有输入的值以及输入的文本。那么你可以这样做:

    cmd.Parameters.AddWithValue("parameterename", Name.Value);
    

    【讨论】:

    • 我试过了,我可以在代码隐藏中访问控件,但是当我尝试捕获输入时,它为空。当调试器点击该行时,即使我在名称控件中有一个值它显示“”作为值。有什么想法吗?
    • cmd.Parameters.AddWithValue("@NAME", Request.Form["Name]); 这种方式似乎有效,为什么这种方式有效而您建议的方式无效?
    • 一个原因可能是您在页面生命周期的哪个位置访问该值。直到Load 事件才设置表单元素的值。因此,如果您以前查看过,那将导致问题。 msdn.microsoft.com/en-us/library/ms178472%28v=vs.90%29.aspx
    • 另一个原因是您可能在表单元素上忘记了runat="server"&lt;form runat="server"&gt;
    • 我确实有 runat="server",但不确定它是如何成为页面生命周期的。如果我用
    【解决方案2】:

    runat="server" 是使代码隐藏可用的东西。

    【讨论】:

      【解决方案3】:

      html 控件应该在表单标签内,还需要添加runat="server" 属性。然后你可以通过 id 访问它。

      cmd.parameters.addwithvalue("parameterename", Name.Value);
      

      请注意,如果输入 id 是 Name,则无法将 Text 设为 "name.text",您需要获取它的 Value

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-12
        • 2011-11-07
        • 1970-01-01
        • 2016-08-21
        • 2012-11-29
        • 2016-03-03
        • 1970-01-01
        • 2015-02-15
        相关资源
        最近更新 更多