使用javascript或jquery从foreach中检索事件和htmlInput元素

时间:2017-02-16 14:38:16

标签: javascript jquery ajax razor foreach

我设法从foreach内部检索动态元素ID并以这种方式将其发送到控制器:

    @using (Html.BeginForm("DeleteConfirmed", "Gifts", FormMethod.Post, new { @class = "form-content", id = "formDiv" }))
    {
        foreach (var item in Model.productList)
        {
            <input type="button" value="Delete" onclick="DeleteButtonClicked(this)" data-assigned-id="@item.ID" />
        }
    }

以及相关脚本,指向控制器的ActionResult方法,负责删除项目:

function DeleteButtonClicked(elem) {
        var itemID = $(elem).data('assigned-id');
        if (confirm('sure?')) {
            window.location.href = "/Gifts/DeleteConfirmed/" + itemID; 
}}

现在,这正常,因为正确检索itemID。 由于我想在表单中添加@Html.AntiForgeryToken(),我的想法是将MVC控制器的Actionmethod更改为JsonResult,在脚本中添加一点Ajax,允许我传递itemID和token。

类似的东西:

function DeleteButtonClicked(elem) {
   event.preventDefault();
   var form = $('#formDiv');
   var token = $('input[name="__RequestVerificationToken"]', form).val();
   var itemID = $(elem).data('assigned-id');
   if (confirm('sure?')) {
            $.ajax({
                type: 'POST',
                datatype: 'json',
                url: '@Url.Action("DeleteConfirmed", "Gifts")',
                data: {
                   __RequestVerificationToken: token,
                    id: itemID
                },
                cache: false,
                success: function (data) { window.location.href = "/Gifts/UserProfile?userID=" + data; },
                error: function (data) { window.location.href = '@Url.Action("InternalServerError", "Error")'; }
            });
        }
   dynamic }Some 

但我不知道如何将{&#39; 添加到我用于识别的<input type="button" value="Delete" onclick="DeleteButtonClicked(this)" data-assigned-id="@item.ID" />中的元素(this =&gt; elem) foreach循环中的项目,以便将其传递给脚本。

上面的剧本显然失败了,因为没有“&#39; event&#39; (如果这将是唯一的错误,我根本不确定)。

需要一些帮助。提前感谢您的时间和考虑。

2 个答案:

答案 0 :(得分:1)

您要做的是使用jQuery创建事件处理程序:

for(i = 0; i < m; i++){
    for(j = 0; j < m; j++){
        scanf("%d",&(a[i][j]));
        printf("%d",a[i][j]);
    }
}

请确保在呈现按钮后呈现此脚本。最好使用$('input[type="button"]').on('click', function(event) { event.preventDefault(); var form = $('#formDiv'); var token = $('input[name="__RequestVerificationToken"]', form).val(); var itemID = $(this).data('assigned-id'); if (confirm('sure?')) { $.ajax({ type: 'POST', datatype: 'json', url: '@Url.Action("DeleteConfirmed", "Gifts")', data: { __RequestVerificationToken: token, id: itemID }, cache: false, success: function (data) { window.location.href = "/Gifts/UserProfile?userID=" + data; }, error: function (data) { window.location.href = '@Url.Action("InternalServerError", "Error")'; } }); } }); 技术。

答案 1 :(得分:0)

试试&#39; on&#39;事件处理程序附件(http://api.jquery.com/on/)。外部函数是DOM ready的简写。

$(function() {
  $('.some-container').on('click', '.delete-btn', DeleteButtonClicked);
})