【问题标题】:Get id of dynamically generated button in Razor获取 Razor 中动态生成的按钮的 id
【发布时间】:2015-10-08 12:33:21
【问题描述】:

我有一个包含对象列表的表格,并且在每一行中我都动态生成了删除该行的按钮。

如何获取@{ c# }按下按钮的id?

@for (int i = 0; i < BL.SNG.GetListLen(); i++)
{
    <form method="post"
          action="">
        <input type="submit"
               value="Delete @i"
               id="@i"
               onclick="button_click(this.id)" />
    </form>
    </td>

【问题讨论】:

  • “删除”是什么意思?将其从页面上移除?

标签: c# html asp.net-mvc-4 razor


【解决方案1】:

您将 id 放置在错误的元素上。因为循环会在每次迭代中创建一个新的表单元素和一个新按钮。 id 应该分配给表单元素本身。我假设 button_click 指的是其他地方定义的一些 JavaScript 函数。

请注意,不鼓励将事件处理程序附加到页面的 html 标记部分中的元素。您通常应该从 JavaScript 添加它们。像这样:

document.getElementsByTagName("input")
.forEach( addEventListener("click", function (...) { });

抱歉,我刚刚注意到您关于从数据库中删除表示的行的评论。 您也可以使用表单本身的提交操作来执行此操作。

【讨论】:

  • @user3170524,你可以使用this.id
  • 按钮不需要 id 它只需要一个引用表单 id 的函数。 function(id){ document.getElementById(id).style.display = "none"; }
  • 另外,我认为这是一个语法错误 value="Delete @i" 应该是 value = @("Delete " + i)
  • 数据库中的删除运行良好,但我不知道如何获取 id 的数量并将其放入 var (index): if(ispost){ bool inserted = BL.deleteanuser( index);} 用数字替换效果很好。
  • 我很困惑您评论中的函数看起来不像 C# 或 JavaScript
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 1970-01-01
  • 2016-09-01
  • 1970-01-01
  • 2011-09-17
  • 2013-01-21
  • 1970-01-01
  • 2015-04-19
相关资源
最近更新 更多