从 InnerHTML 获取输入值

Posted

技术标签:

【中文标题】从 InnerHTML 获取输入值【英文标题】:Get values of input from InnerHTML 【发布时间】:2018-12-16 19:38:57 【问题描述】:

我在从 C# 中的输入中获取值时遇到问题。我有一个场景,一些用户看到不同的表。每个用户都有自己的批准级别(从 1 到 5)。

switch (levelofapprove_converted)
             //HiringManager
                case 1:
                    id_hiringmanager_div.Innerhtml = @"<table class=""table"" id=""id_hiringmanager"" runat=""server"">
<td style=""height: 37px""><input type=""checkbox"" class=""form-check-input"" id=""id_check_claims"" runat=""server""></td></table>";
                    break;
                //IT
                case 2:
 id_hiringmanager_div.InnerHtml = @" <table class=""table"" id=""id_IT"" runat=""server"">                
                <tr>
                    <td style=""color: rgb(0,0,0); height: 37px;"">Delete User Access Rights</td>
                    <td style=""height: 37px""><input type=""checkbox"" class=""form-check-input"" id=""id_check_access_rights"" runat=""server""></td>
                </tr>
</table>";
                    break;
            

这是一个外观设计,我使用 InnerHtml 为每个人使用不同的表格填充 div。

<div runat="server" id="id_hiringmanager_div"></div>
  <table class="table">
    <tr>
      <td colspan="2">
       <button class="btn btn-primary btn-lg btn-block" onserverclick="btn_approve_Click" runat="server">Approve</button>
      </td>
     </tr>
  </table>

因此,当我尝试从复选框中获取价值或调用 OnclickEvent 时,什么都没有发生。错误列表说没有看到这样的控制。 以下是我尝试调用它们的方式:

bool check_pending_leave = id_check_pending_leave.IsChecked;

【问题讨论】:

您在休息前缺少引号;这是错字吗? 你的复选框也没有 runat="server",如果没有 runat server 标志,你不能​​从代码隐藏中调用它。 我刚刚从源代码中删除了很多问题,代码,这是一个错字 @SehaxX 的问题是它在这个内容中看不到任何输入 您的意思是,您的 id_hiringmanager_div 对于所有情况都是空的? 【参考方案1】:

所以您的问题是您正在通过字符串创建输入。我建议的 runat="server" 也无济于事,因为服务器不知道它们是创建的。

您必须选择: 首先是在 aspx/ascx 文件中创建 html 标记并将它们放入 asp:panel 并使用您拥有的代码隐藏逻辑隐藏/显示它们。

或者你像开始那样做,并在输入中添加标签 name="id_check_claims",然后在后面的代码中你需要调用输入,如:

//IMPORTANT: if checked it will return "on", not 1 or true
var strValue = Page.Request.Form["id_check_claims"];

希望这会有所帮助。

【讨论】:

【参考方案2】:

取一个隐藏字段(服务器端变量)值来设置复选框点击事件的复选框值。

<asp:HiddenField ID="hdnClaim" runat="server" ClientIDMode="Static" Value="0" />


<script type="text/javascript">
  function onclaim()
   
     var idchkclaim = document.getElementById("id_check_claims");
     document.getElementById("hdnClaim").value = idchkclaim.checked == true ? "1" : "0";
   
</script>

在服务器端访问获取隐藏字段的值。

【讨论】:

以上是关于从 InnerHTML 获取输入值的主要内容,如果未能解决你的问题,请参考以下文章

如何从插入到 innerHtml 的单选按钮中获取值

document.getElementById("test").value 和 document.getElementById("test").innerHTM

Sencha Touch 2:如何从面板获取 HTML 以及输入值

将输入值应用于其所有 td innerhtml

无法在 IF 语句中读取 null 的属性“innerHTML”[重复]

无法从 innerHTML 获取动态数据 - Angular