如何在actionlink mvc 4中调用javascript函数?

时间:2013-04-27 15:33:06

标签: javascript ajax asp.net-mvc asp.net-mvc-4

所以我的观点包含一些actionlinks和一个javascript方法,我想要的是在actionlink中调用我的脚本,这是我的脚本:

function deleteSubscriber(id)
{
  var url = '/Subscribers/Delete/' + id;
  $.ajax({
    type: "delete",
    url: url,
    data: {},
    datatype: 'json',
    success: function (data) { alert(id); },
  });
}

这是我的行动链接:

 @Html.ActionLink("Delete", "Delete", new { id=//here i want to put my script  },new { @class = "delete-logo" })

这是我的行动:

[HttpDelete,ActionName("delete")]
    public ActionResult Delete(string id)
    {
        try
        {
              IEnumerable<Subscribe> list = from s in dbcontext.Subscribes select s;
              foreach (var sb in list)
              {
                  if (sb.cin == id)
                  {
                      dbcontext.Subscribes.Remove(sb);
                  }
              }
              dbcontext.SaveChanges();
              return View("Index");
        }
        catch
        {
            return View();
        }
    }

3 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点,其中之一是: -

在您的视图中: -

@Html.ActionLink("Delete", "Delete", new { id=//here i want to put my script  },
 new { @class = "delete-logo" });

如果您想以ajax方式调用它,您可以像这样创建链接。

<a class="delete-logo" data-key="@Model.Cin" href="javascript:void(0);"/>

脚本: -

$(function()
{
   $('.delete-logo').on('click',function(){
   //Do something to get id.
   //Get the delete button id if it is the id you want to use for deletion.
   var id = $(this).data('key'); 
   deleteSubscriber(id);
  })
});

答案 1 :(得分:4)

如果您想坚持在锚点中进行JavaScript调用,则不一定需要/想要使用HtmlHelper。您可以编写普通的旧HTML:

<a href="@Url.Action("delete")" onclick="javascript:deleteSubscriber(@id)">Delete</a>

我不建议使用这种语法; jQuery(和其他JavaScript框架)提供了一种不那么具有侵入性的绑定处理程序的方式:

<a href="@Url.Action("delete")" class="delete-btn" data-id="@id">Delete</a>

$('a.delete-btn').on('click', function(event) {
    event.preventDefault();
    // call the function
    deleteSubscriber($(this).data('id'));
});

显然,在这两个方面,我假设您有某种循环,您可以访问id变量。

答案 2 :(得分:0)

除非您希望在JavaScript关闭时调用它,否则您不需要将其设为ActionLink

我会在链接中添加class属性,并将其与.click事件绑定。