2013-02-26 3 views
0

Мне нужно, что пункт я нажимаю, чтобы отправить его Id в GetProduct() действий. Я использовал hidden элемент, но он не работает:Как отправить идентификатор каждого элемента из формы Ajax в действие?

@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='[email protected](item.Id)' name ="id" value="@item.Id" /> 
     } 

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

Где моя не так? Как я могу отправить Id?

+0

Вы пробовали мой помощник по решению? пожалуйста, дайте мне знать, если у вас есть проблема :) –

+0

Теперь я tring сейчас, может быть, эта часть некорректна: $ ('# id'). val ($ (this) .attr ('rel')); ? –

+0

вот скрипач с решением, которое я предложил http://jsfiddle.net/qNCXg/ –

ответ

1

скрытый ввод имеет имя «id» и он добавляет количество циклов времени в цикл. Следовательно, это не сработает.

Не отправляйте форму непосредственно при нажатии кнопки. сохраните идентификатор в атрибуте rel кнопки. и присвоить ему значение скрытой переменной, когда он получает щелкнул, а затем отправить форму ..

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

ввода кода OnClick в отдельной функции будет :) хотя предпочитали

Проверить это Fiddler

+0

Спасибо за это. Но у меня много скрытых полей. Форма отправляет сначала скрытую в каждый раз. –

+0

Да, у вас было бы много скрытых полей, поскольку вы создаете скрытые поля в цикле. вытащить скрытое поле из цикла –

+0

Я извлек его из цикла. теперь это работает. –

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='[email protected](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> 
+0

или использовать это. @item.Name

+0

Форма отправки не является проблемой. оно работает. но всегда отправляйте 1 значение. Id = 1. Я хочу отправить идентификатор элемента clicked item. –

+0

проблема заключалась в том, что каждая форма имеет более одного скрытого поля с именем id.try теперь я меняю код. –