【问题标题】:How To Access Value From Foreach Loop For Hidden Input?如何从 Foreach 循环中访问隐藏输入的值?
【发布时间】:2019-06-17 11:05:32
【问题描述】:

在这里,我试图获取隐藏类型 input<input type="hidden" id="msg" value="1" /> 的值,它位于 foreach 循环内部和使用 jquery 的表行内部。但是我的脚本什么也没返回。
所以对我的方法的任何帮助都会有很大的帮助。

下面是我的html

@foreach (var item in Model)
{
<tr>
    <input type="hidden" id="msg" value="1" />
    @Html.HiddenFor(x => item.studentid, new { @id = "studentidforRejectectionadmission" })
    <td>@Html.DisplayFor(modelItem => item.fullname)</td>
    <td>@Html.DisplayFor(modelItem => item.classname)</td>
</tr>
}



下面是我访问值的脚本

$("tr").find('input#msg').val();

【问题讨论】:

  • 你的隐藏输入得到了相同的 id...“msg”
  • 旁注:无效的 HTML(带有重复 ID)可以产生未定义的结果就好了...请确定您是否有 HTML/jQuery 问题(并显示 HTML 而不是 CSHTML)或 C#/CSHTML(比你还需要展示一些 C# 代码)

标签: c# jquery asp.net-mvc-5


【解决方案1】:

去掉id,放入class,因为id在html中是唯一的, class 可以在任何元素中重复类名

 @foreach (var item in Model)
    {
    <tr>
        <input type="hidden" class="msg" value="1" />
        @Html.HiddenFor(x => item.studentid, new { @id = "studentidforRejectectionadmission" })
        <td>@Html.DisplayFor(modelItem => item.fullname)</td>
        <td>@Html.DisplayFor(modelItem => item.classname)</td>
    </tr>
    }

现在您可以通过 jquery eloquent 选择器访问输入值

let val = $("tr").find('.msg').eq(0).val();
console.log(val);

【讨论】:

    【解决方案2】:

    如 cmets 中所述,您具有相同的 id "msg"。 我建议您使用“msg”类代替输入,而不是使用多个 id。

    如果你像你对表格行所做的那样匹配很重要,那么用 id msg 输入:

    $("tr").find('input#msg').val();
    

    相当于

    $("tr > input.msg").val();
    

    如果你想访问一个特定的隐藏输入,你可以像这样访问:

    $("tr > input.msg")[1].value;
    

    为了向您展示它是如何工作的,我为您创建了一个 dotnetfiddle。也许您面临的问题是您错过了在代码周围创建表格标签以正常工作,否则您将无法拥有表格行... https://dotnetfiddle.net/Jt7KGp

    【讨论】:

    • @Adhi 哪个部分不适合您?如果你用更多的话描述我可以帮助你
    猜你喜欢
    • 2012-03-16
    • 2011-05-21
    • 1970-01-01
    • 2012-10-30
    • 2019-02-26
    • 2016-03-21
    • 2013-06-12
    • 1970-01-01
    • 2018-02-20
    相关资源
    最近更新 更多