在foreach Razor内更新Jquery文本字段

时间:2015-10-15 13:16:20

标签: c# jquery razor foreach

我正在开发一个简单的asp.net razor显示页面,在那里我通过ViewBag获取我的数据。在数据中,有供应商ID,但我想显示供应商名称。 html:

@foreach (XXX supplier in ViewBag.UnApprovedOrders)
{
<tr >
   <td>
      <text id="supplierName">na</text>
      <script>supplierFromId("@supplier.SupplierId");</script>
   </td>
</tr>

和脚本:

function supplierFromId(supplierId)
{
var name;
for (var i = 1; i < list.length; i++) {
   if (list[i].id == supplierId) name = list[i].name;
}
   $("#supplierName").text(name);
};

该列表是从其他地方提供的供应商列表。 问题是:该函数只被调用一次,因此只有第一个字段获得正确的名称,其余字段仍为“na”。
有什么问题?

4 个答案:

答案 0 :(得分:2)

由于您的foreach循环,您指定的id <text id="supplierName">na</text>将会重复。

我的建议是从使用id更改为使用class来识别供应商名称。然后你可以使用jquery的.each来更新所有类名。

答案 1 :(得分:2)

ID专门用于标识单个元素。使用类应该使这个工作。类被设计用于多个元素,并允许您更新所有元素

答案 2 :(得分:2)

line = labels == 2 # select the pixels with label 2 only

您在ID <text id="supplierName">na</text>中创建了许多代码,但只能应用第一个代码。

要解决此问题,请尝试将supplierName转换为id,如下所示:

class

<text class="supplierName">na</text>

答案 3 :(得分:1)

这应该有效:

@foreach (XXX supplier in ViewBag.UnApprovedOrders)
{
<tr >
   <td>
      <text class="supplierName">@supplier.SupplierId</text>
   </td>
</tr>
}

<script>

$(document).ready(function() {
    $('.supplierName').each(function() {

        var supplierId = $(this).text();
        var name = '';
        for (var i = 0; i < list.length; i++) {
           if (list[i].id == supplierId) name = list[i].name;
        }

        $(this).text(name)
    });
});
</script>
相关问题