C# “删除”按钮发送另一表单的值

C# “删除”按钮发送另一表单的值,c#,html,ajax,asp.net-mvc,forms,C#,Html,Ajax,Asp.net Mvc,Forms,我使用以下代码在for循环中创建多个不同的表单,以删除数据库中的不同值: @foreach (var item in Model.value) { <script>var temp = {'value' : '@item.name'}</script> <form class="formStyle" id="allCurrentNames_@item.name" method="post" ac

我使用以下代码在for循环中创建多个不同的表单,以删除数据库中的不同值:

    @foreach (var item in Model.value)
        {
            <script>var temp = {'value' : '@item.name'}</script>
            <form class="formStyle" id="allCurrentNames_@item.name" method="post" action="">
                <input type="hidden" id="part_name_@item.name" value="@item.name"/>
                <button class="partDelete" onclick="deletePart(temp);return false;">Delete</button>
            </form>
        }
假设我将有如下内容:

Person Name1       [DELETE]
Person Name2       [DELETE]
Person Name3       [DELETE]
Person Name4       [DELETE]
Person Name5       [DELETE]
Person Name6       [DELETE]
如果我点击人名3,无论我点击哪个删除按钮,它都会发送人名6的值

非常感谢您的帮助!
谢谢你抽出时间

您的问题在于javascript中的这一行:

var personName = $("input#part_num").val();
由于在循环中呈现这些表单,因此将有多个输入字段,id为
part_num
。JQuery将为您提供找到的第一个与选择器匹配的实例,这就是为什么您总是发布第一人称的值

您可以通过找出事件来自哪种形式,然后选择正确的
part\u num
来轻松解决此问题

var personName = $('#correct_form_id #part_num').val();
希望这有帮助

编辑:添加一些示例代码

一种方法是捕获表单提交并自己处理。例如:

$( "form" ).submit(function( event ) {
  var personName = $(this).find('#part_num').val();

  // Do what you want with this information

  // prevents the form from posting, if that is desired
  event.preventDefault(); 
});
现在,页面上可能有其他表单不希望被此处理程序捕获,因此可以向循环中生成的表单添加一个类,以验证是否只捕获了正确的事件。那么您的定义如下所示:

$('form.some_class').submit(function(event)) { 
...
});

一个简单得多的操作可以是为每个人的名字设置一个唯一的id。您只需要替换两行代码。 生成表单时,请替换:

<input type="hidden" id="part_name" value="@item.name"/>
<button class="partDelete" onclick="deletePart();return false;">Delete</button>
function deletePart() {
var personName = $("input#part_num").val();
为此:

<input type="hidden" id="part_name_@item.name" value="@item.name"/>
<button class="partDelete" onclick="deletePart(@item.name);return false;">Delete</button>
function deletePart(id) {
var personName = $("input#part_name" + id).val();

从html中删除javascript

 @foreach (var item in Model.value)
        {
            <form class="formStyle" id="allCurrentNames_@item.name" method="post" action="">
                <input type="hidden" id="part_name_@item.name" value="@item.name"/>
                <button class="partDelete">Delete</button>
            </form>
        }
$('.partDelete')。单击(函数(){
var$this=$(this);
var partnumber=$this.parent().find('input').val();
var dataString='partnumber='+partnumber;
警报(数据字符串)
返回false;
});

删除
删除
删除

请参阅:我编辑了上述内容,以说明不同的部分编号id,但现在它总是发送要删除的最后一个人值…我也尝试添加下面提到的特定表单id,但它总是发送最后一个值我尝试了这一点,但出于某种原因,现在它总是获取最后一个表单中的值…我还为每个#part_num尝试了不同的id(例如:#part_num1,#part_num2#part_num3),但这也最终发送了最后一个值……ajax代码有关系吗?我有一个断点集来告诉我ajax部分中的变量只是发送要删除的值并重新加载页面?
 @foreach (var item in Model.value)
        {
            <form class="formStyle" id="allCurrentNames_@item.name" method="post" action="">
                <input type="hidden" id="part_name_@item.name" value="@item.name"/>
                <button class="partDelete">Delete</button>
            </form>
        }
$('.partDelete').click(function(){
    var $this = $(this);
    var partnumber = $this.parent().find('input').val();
    var dataString = 'partnumber=' + partnumber;

    //ajax

    return false;
});