C# foreach Razor中的Jquery文本字段更新

C# foreach Razor中的Jquery文本字段更新,c#,jquery,razor,foreach,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("@sup

我正在制作一个简单的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。 怎么了?

由于您的foreach循环,您指定的na id将被复制


我的建议是从使用id改为使用类来标识供应商名称。然后,您可以使用jquery用类名更新all。

ID专门标识单个元素。使用类应该可以实现这一点。类设计用于多个元素,并允许您更新所有元素

这应该可以:

@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>
na

您正在id supplierName中创建许多标记,但只能应用第一个标记

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

na


为什么不在代码中这样做,并返回一个已经包含供应商名称的模型,那么你的razor只需要显示它?你能给我一个例子吗?@PaxEntry the。每个都是指向函数文档的链接谢谢,它几乎可以工作,除了函数没有被调用,只是放置了一个控制台。logsupplierId;什么也没有显示。由于前面的原因,显示数值的字段也是如此。将val更改为文本可以实现此目的。谢谢大家!:
<script>
$(".supplierName").each(function() {
   // do something...
});
</script>