使用Ajax的HTML.ActionLink到Controller来防止回发

时间:2013-02-28 21:10:27

标签: jquery ajax asp.net-mvc html.actionlink

这是我视图中的ASP MVC代码。它会触发控制器并传递assetId和relationshipContext:

 @Html.ActionLink("Archive", "Archive", new { assetId = Model.ID, relationshipContext = assetTypeRelation.RelationshipContextID }, new { @class = "btn btn-mini btn-warning", id = "btnArchive" })

我想在这个HTML.ActionLink中使用Ajax,但有点困惑。这是我开始使用的jQuery。基本上我只需要这个actionlink就可以将assetId和relationshipContext传递给我的assetcontroller中的Archive方法。

$('#btnArchive').click(function(){
                  $.ajax({
                      url: '@Url.Action("Archive", "Archive")',
                      type: 'POST',
                      dataType: 'json',
                      data: {
                          assetId: $(this).attr("assetId"),
                          relationshipContext: $(this).attr("relationshipContext"),
                      },
                      success: function(){
                          alert("success")
                      },
                      error: function () {
                          alert("error")
                      },

                  });

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您的AssetController操作方法是什么样的?我应该看起来像:

[HttpPost]
public ActionResult Archive(int assetId, string relationshipContext)
{
     //do some work
     return Content("true");
}

此外,您在@ Url.Action调用中调用了错误的Controller。您的View代码可能需要更改为

$('#btnArchive').click(function(){
                  $.ajax({
                      url: '@Url.Action("Archive", "Asset")',
                      type: 'POST',
                      dataType: 'json',
                      data: {
                          assetId: $(this).attr("assetId"),
                          relationshipContext: $(this).attr("relationshipContext"),
                      },
                      success: function(data){
                          alert(data)
                      },
                      error: function () {
                          alert("error")
                      },

                  });