asp.net-mvc-3 – 从ASP的Ajax.ActionLink获取JSonResult

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 从ASP的Ajax.ActionLink获取JSonResult前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@
如何使用Ajax.ActionLink从控制器方法实际获取 JSON?我试着搜索网站,但最接近的是 ASP.NET MVC controller actions that return JSON or partial html

并且“最佳答案”实际上并没有告诉您如何从ajax.actionlink中的SomeActionMethod获取JSON.

解决方法

我个人不喜欢Ajax.*助手.在ASP.NET MVC中< 3他们用javascript污染我的HTML,在ASP.NET MVC 3中,他们使用完全冗余的HTML 5 data- *属性污染我的HTML(例如锚点的url).此外,它们不会自动解析成功回调中的JSON对象,这就是您的问题所在. 我使用普通的Html.*助手,像这样:
  1. @Html.ActionLink(
  2. "click me",// linkText
  3. "SomeAction",// action
  4. "SomeController",// controller
  5. null,// routeValues
  6. new { id = "mylink" } // htmlAttributes
  7. )

这显然会产生正常的HTML:

  1. <a href="/SomeController/SomeAction" id="mylink">click me</a>

我在不同的javascript文件中不引人注意地使用AJAXify:

  1. $(function() {
  2. $('#mylink').click(function() {
  3. $.post(this.href,function(json) {
  4. // TODO: Do something with the JSON object
  5. // returned the your controller action
  6. alert(json.someProperty);
  7. });
  8. return false;
  9. });
  10. });

假设以下控制器操作:

  1. [HttpPost]
  2. public ActionResult SomeAction()
  3. {
  4. return Json(new { someProperty = "Hello World" });
  5. }

更新:

根据评论部分的要求,这里是如何使用Ajax.*助手(我再次重复一遍,这只是说明如何实现这一点,绝对不是我推荐的东西,请参阅我推荐的解决方案的初步答案):

  1. @Ajax.ActionLink(
  2. "click me","SomeAction","SomeController",new AjaxOptions {
  3. HttpMethod = "POST",OnSuccess = "success"
  4. }
  5. )

并在成功回调中:

  1. function success(data) {
  2. var json = $.parseJSON(data.responseText);
  3. alert(json.someProperty);
  4. }

猜你在找的asp.Net相关文章