【发布时间】:2014-07-22 22:48:14
【问题描述】:
所以我无法在我的 C# 控制器中调用我的函数。每当发出 ajax 请求时,控制器都会自动重定向到控制器的主视图,即我的“Index”方法。如果我设置断点,该函数永远不会到达我的函数“Favorite”,而只是重定向。我已经有一段时间了,只是不明白我做错了什么。谢谢。
这是我的 ajax 函数:
var updateFavorites = function (event) {
$.ajax({
type: 'Post',
url: baseUrl + '/Post/Favorite',
data: {
id: $(this).attr('data-id'),
isfavorite: $(this).attr('data-favorite')
},
success: function () { },
complete: function () { }
});
event.preventDefault();
这是我最喜欢的方法:
[System.Web.Mvc.HttpPost]
public JsonResult Favorite(int id, bool isfavorite)
{
"Code here..."
}
这是默认视图:
public ActionResult Index()
{
"Code here..."
}
有人知道会发生什么吗?我一直盯着我的代码并尝试不同的东西几个小时,但似乎找不到错误。谢谢!
编辑:
这里有一些要求:
路由配置:
routes.MapRoute("SpecificPost", "Post/{title}/{action}",
new { controller = "Post", action = "Details", },
new { title = @".*" });
routes.MapRoute("Create", "Post/{action}",
new { controller = "Post", action = "Create", });
// MVC Default
routes.MapRoute("Default", "{controller}/{action}", new { controller = "Post", action = "Index" });
Html(这是按钮,不知道你还想要什么):
<span class ="btn favoriteButton" data-id="@Model.Id" data-favorite="@Model.IsFavorite">Favorite</span>
还有jquery:
$('.favoriteButton').click(updateFavorites);
【问题讨论】:
-
我假设收藏夹方法在 PostController 中?您是否还可以添加路由表以确保在路由到达 PostController 之前没有任何东西拦截?
-
你的路由配置文件中有什么
-
您是通过按下按钮来执行此操作的,问题可能是提交正在执行。你能提供HTML吗?
-
更新了我的帖子以获取所需的代码!谢谢!
-
确保你的按钮看起来像这样 ,你也可以留下你正在调用的 url,如下 url:'Favorite ',
标签: c# jquery ajax asp.net-mvc