如何将每个元素的ID从Ajax表单发送到操作?

时间:2013-02-26 10:34:57

标签: ajax asp.net-mvc asp.net-ajax hidden ajax.beginform

我需要这个,我点击哪个项目,将Id发送到GetProduct()行动。我使用了hidden元素,但它不起作用:

@using (Ajax.BeginForm("GetProduct", "Product", new AjaxOptions { UpdateTargetId = "getProductResult" }, new { id = "productForm" }))
    {
      foreach (var item in list)
      {
         <a href="#" onclick="$('#productForm').trigger('submit');">@item.Name</a>

        //this hidden always send '1', but I want to send item's Id
        <input type="hidden" id='product_@(item.Id)' name ="id" value="@item.Id"  />
      }

     <noscript>
        <input type="submit" id="sendButton" />
     </noscript>
    }

我哪里错了?如何发送Id

2 个答案:

答案 0 :(得分:1)

隐藏的输入名称为“id”,并且在for循环中增加了时间。 因此它不起作用..

请勿直接点击按钮提交表单。将ID存储在按钮的rel属性中。 并在单击时将其值赋值给隐藏变量,然后提交表单..

<a href="#"
   rel="@(item.id)"
   onclick="$('#id').val($(this).attr('rel')); ('#productForm').trigger('submit');">
@item.Name
</a>

将onClick代码放在单独的函数中将会优先:)

选中此Fiddler

答案 1 :(得分:1)

试试这个。

  foreach (var item in list)
  {
    @using (Ajax.BeginForm("GetProduct", "Product", new AjaxOptions { UpdateTargetId = "getProductResult" }, new {  }))
      {
     <a href="#" class="anchor" >@item.Name</a>

    //this hidden always send '1'.
    <input type="hidden" id='product_@(item.Id)' name ="id" value="@item.Id"  />


      <noscript>
       <input type="submit" id="sendButton" />
     </noscript>
     }
  }



<script>
$(function(e){
 $('.anchor').click(function(e){
   //get the parent form.
   var parentform= $(this).parents('form:first');
   parentform.submit();

  });
});
</script>