C# Foreach:tbody内部带有Javascript方法的Razor

C# Foreach:tbody内部带有Javascript方法的Razor,c#,javascript,html,razor,C#,Javascript,Html,Razor,全部。 我正在尝试动态创建一个表。所以在tbody标记中,我有一段代码,它可以生成所有的行 <tbody id="body"> @foreach (FoodkitGestores.Entidades.MenuCantidad m in Model.p.listaMenu) { <script type="text/javascript">

全部。 我正在尝试动态创建一个表。所以在tbody标记中,我有一段代码,它可以生成所有的行

       <tbody id="body">
            @foreach (FoodkitGestores.Entidades.MenuCantidad m in Model.p.listaMenu)
            {

                <script type="text/javascript">
                    var idMenu = Number(@m.idMenu);
                    var nombre = $("#menu-"+idMenu).find(".item").text();
                    var precio = parseFloat($("#menu-"+idMenu).find(".item").attr("data-precio"));
                    var cantidad = Number(@m.cantidad);
                    var cantidadEntregada = Number(@m.cantidadEntregada);    

                    AgregarMenu(idMenu, nombre, precio, cantidad, cantidadEntregada);            
                </script>

            }
        </tbody>

@foreach(模型p.listaMenu中的FoodkitGestores.Entidades.MenuCantidad m)
{
var idMenu=Number(@m.idMenu);
var nombre=$(“#菜单-”+idMenu).find(“.item”).text();
var precio=parseFloat($(“#menu-”+idMenu).find(“.item”).attr(“data precio”);
var cantidad=数字(@m.cantidad);
var cantidadEntregada=数量(@m.cantidadEntregada);
AgregarMenu(idMenu、nombre、precio、cantidad、cantidadEntregada);
}
所以,问题是它没有找到函数“agregermenu”。说它没有定义。但它是,我测试了它,它正在工作

我尝试添加标记,但它不受tbody内部HTML5的支持,而且也不起作用。它只是字面上写着“AgregarMenu(idMenu,nombre,precio,cantidad,cantidadEntregada);”

有线索吗? 非常感谢

编辑:
AgregarMenu是一个Javascript方法,位于已引用的.js文件中。

假设
AgregarMenu
是一个Javascript方法,您需要确保在调用该方法的部分之前加载定义该方法的脚本

如果在外部javascript文件中定义了此函数,请确保在foreach代码上方包含该函数。该函数可能位于视图的顶部


尽管这可能会解决您当前的问题,但我建议您执行某种模板逻辑,而不是在循环中多次调用AggregarMenu方法。Tim的答案是一个很好的选择,或者您可以研究其他一些模板解决方案。

我建议最好使用数据属性来装饰项目,并构建一个脚本,该脚本将迭代项目,从数据属性中提取值,然后应用函数。实际上,通过在函数定义之外用不同的值重复相同的代码,您的全局命名空间中到处都是重复的变量定义。如果执行此操作并确保方法在DOM加载后运行,那么只要函数在页面上,它就应该工作并且是一个更干净的实现

<table>
<tbody>
@foreach (FoodkitGestores.Entidades.MenuCantidad m in Model.p.listaMenu)
{
  <tr id="menu-@m.idMenu" 
      class="menu" 
      data-id="@m.idMenu"
      data-cantidad="@m.cantidad" 
      data-cantidadEntregada="@m.cantidadEntregada">
        <td class="item" data-precio="35.15">35.15</td>
  </tr>
}
</tbody>
</table>

<script type="text/javascript">
   $(function() {
       $('.menu').each(function() {
           var $this = $(this),
               nombre = Number($this.data('id')),
               parseFloat($this.find(".item").data("precio")),
               cantidad = Number($this.data('cantidad'));
               cantidadEntregada = Number($this.data('cantidadEntregada');    
           AgregarMenu(idMenu, nombre, precio, cantidad, cantidadEntregada);
       });
   });
</script>

@foreach(模型p.listaMenu中的FoodkitGestores.Entidades.MenuCantidad m)
{
35.15
}
$(函数(){
$('.menu')。每个(函数(){
变量$this=$(this),
nombre=Number($this.data('id')),
parseFloat($this.find(“.item”).data(“precio”),
cantidad=Number($this.data('cantidad'));
cantidadEntregada=Number($this.data('cantidadEntregada');
AgregarMenu(idMenu、nombre、precio、cantidad、cantidadEntregada);
});
});

建议已接受!非常感谢,我将实施此建议