use*_*594 6 asp.net-ajax asp.net-mvc-3
如何使用Ajax.ActionLink从控制器方法实际获取JSON?我尝试搜索网站,但最接近的是ASP.NET MVC控制器操作返回JSON或部分html
并且"最佳答案"实际上并没有告诉您如何从ajax.actionlink中的SomeActionMethod获取JSON.
Dar*_*rov 13
我个人不喜欢Ajax.*帮手.在ASP.NET MVC <3中,他们使用javascript污染我的HTML,而在ASP.NET MVC 3中,他们使用data-*完全冗余的HTML 5 属性(例如锚点的url)污染我的HTML .此外,它们不会自动解析成功回调中的JSON对象,这就是您的问题所在.
我使用普通Html.*助手,像这样:
@Html.ActionLink(
"click me", // linkText
"SomeAction", // action
"SomeController", // controller
null, // routeValues
new { id = "mylink" } // htmlAttributes
)
Run Code Online (Sandbox Code Playgroud)
这显然会产生正常的 HTML:
<a href="/SomeController/SomeAction" id="mylink">click me</a>
Run Code Online (Sandbox Code Playgroud)
我在不同的javascript文件中不引人注意地使用AJAXify:
$(function() {
$('#mylink').click(function() {
$.post(this.href, function(json) {
// TODO: Do something with the JSON object
// returned the your controller action
alert(json.someProperty);
});
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
假设以下控制器操作:
[HttpPost]
public ActionResult SomeAction()
{
return Json(new { someProperty = "Hello World" });
}
Run Code Online (Sandbox Code Playgroud)
更新:
根据评论部分的要求,这里是如何使用Ajax.*助手进行的(我再次重复一遍,这只是说明如何实现这一点,绝对不是我推荐的东西,请参阅我推荐的解决方案的初步答案):
@Ajax.ActionLink(
"click me",
"SomeAction",
"SomeController",
new AjaxOptions {
HttpMethod = "POST",
OnSuccess = "success"
}
)
Run Code Online (Sandbox Code Playgroud)
并在成功回调中:
function success(data) {
var json = $.parseJSON(data.responseText);
alert(json.someProperty);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11180 次 |
| 最近记录: |