ASP.NET MVC-如何调用控制器方法并且不离开视图

时间:2018-11-14 15:03:18

标签: c# html asp.net asp.net-mvc

我一直在寻找类似的问题,但是所有的答案都不适用于我的问题。我正在创建一个愿望清单,并且我希望该链接仅返回某种确认,而不转到其他视图。

查看:

...
    <div class="wishlist">
       @Html.ActionLink(" ", "AddToWishList", "Wishlist", routeValues: new
            {
               itm_id = item.id
            },
            htmlAttributes: new {@class = "heart" })
    </div>
...

控制器

 public async Task<ActionResult> AddToWishList(int itm_id, int recordId)
        {
            ...
            return RedirectToAction(nameof(Index));
        }

2 个答案:

答案 0 :(得分:2)

您要使用Ajax.ActionLink而不是Html.ActionLink。下面的文章应指定用法的一些详细信息。确保记住包括了jQuery库,否则它将不会生成您期望的链接类型。

https://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/ajax-actionlink-and-html-actionlink-in-mvc/

就我个人而言,我不会使用Microsoft方法并用JavaScript自己编写jQuery Ajax回发。

答案 1 :(得分:1)

您可以简单地使用Jquery Get实现此目的。 https://api.jquery.com/jquery.get/

这是您的后端。

public async Task<JsonResult> AddToWishList(int itm_id, int recordId)
        {
// Do you data here and put it to the List<something> list
            return Json(list, JsonRequestBehavior.AllowGet);
        }

您的前端应该是这样的。

<button>Click</button>

<div class="wishlist">
</div>

<script>
$("button").click(function(){
$.get( "YourControllerName/AddToWishList",{itm_id: yourItemId, recordId: yourRecordId} function( data ) {
  $( ".wishlist" ).html( data );
  alert( "Load was performed." );
});
});
</script>