为什么不在MVC中调用ajax调用控制器方法?

时间:2015-11-10 14:25:12

标签: jquery ajax asp.net-mvc

我几乎已经阅读了关于Ajax Post到控制器的所有问题。我试过我在这里看到的每一个解决方案。尽管如此,我的帖子仍然无效。因此,请不要认为它是重复的,至少在我得到答案之前。

public class BlogController : Controller
    {
    [HttpPost]
    public ActionResult Test(BlogElement data)
    {
        return null;
    }

    public class BlogElement
    {
       public string HtmlContent { get; set; }
       public string Date { get; set; }
    }

和Ajax部分

var data_ = { HtmlContent: "someContent", Date: "someDate" }
    $.ajax({
        type: "POST",
        url: "/Blog/Test",
        dataType: "json",
        data:data_ 
    });

Ajax响应错误显示“未找到”。 这是我的路线配置。我实际上只使用属性路由。

routes.MapMvcAttributeRoutes();

此配置可能出现什么问题?

1 个答案:

答案 0 :(得分:2)

显然,在MapMvcAttributeRoutes()中拨打RoutesConfig并不意味着也会注册默认的{controller}/{action}路由。

添加它:

routes.MapRoute(
   name: "Default",
   url: "{controller}/{action}/{id}",
   defaults: new { controller = "Home", action = "Index", Id = UrlParameter.Optional } );

或使用相应的[Route]属性修饰您的操作:

[HttpPost]
[Route("Blog/Test")]
public ActionResult Test()
{
    // ...
}