从ASP的Ajax.ActionLink获取JSonResult
从ASP的Ajax.ActionLink获取JSonResult
如何使用Ajax.ActionLink从控制器方法中实际获取JSON?我尝试在网站上搜索,但最接近的东西是ASP.NET MVC控制器返回JSON或部分HTML的操作
而“最佳答案”实际上并没有告诉您如何从ajax.actionlink中获取SomeActionMethod的JSON。
admin 更改状态以发布 2023年5月22日
个人而言,我不喜欢Ajax.*
辅助工具。在 ASP.NET MVC < 3中,它们会用javascript来污染我的HTML,而在 ASP.NET MVC 3中,它们会用HTML5 data-*
属性来污染我的HTML,这些属性是完全冗余的(比如锚点的URL)。此外,它们不会自动解析成功回调中的JSON对象,这正是你的问题所在。\n\n我使用普通的Html.*
帮助程序,例如:\n\n
@Html.ActionLink( "click me", // linkText "SomeAction", // action "SomeController", // controller null, // routeValues new { id = "mylink" } // htmlAttributes )
\n\n它会生成普通的HTML:\n\n
click me
\n\n我会在单独的javascript文件中使用它们,实现无干扰式的AJAX:\n\n
$(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; }); });
\n\n假设有以下控制器动作:\n\n
[HttpPost] public ActionResult SomeAction() { return Json(new { someProperty = "Hello World" }); }
\n\n更新:\n\n根据评论区的要求,这是如何使用Ajax.*
帮助程序实现的(我再次重申,这只是说明如何实现,绝不是我推荐的方法,请参见我最初的回答):\n\n
@Ajax.ActionLink( "click me", "SomeAction", "SomeController", new AjaxOptions { HttpMethod = "POST", OnSuccess = "success" } )
\n\n在成功回调中:\n\n
function success(data) { var json = $.parseJSON(data.responseText); alert(json.someProperty); }