可以弄清楚为什么jQuery脚本没有正确地与ASP.NET Web API对话

时间:2012-07-18 19:31:33

标签: jquery ajax asp.net-mvc-4 asp.net-web-api

我尝试运行此脚本时收到500错误。我在asp.net mvc4中设置了一个演示项目,它带有一个小型web api控制器和默认的家庭控制器。这是我的api控制器:

namespace MyTrainingApi.Controllers
{

public class CoursesController : ApiController
{

    //for demo mock data, would pull from dbContext here. 
    static List<Course> _courses = InitCourses();

    private static List<Course> InitCourses()
    {
        var ret = new List<Course>();
        ret.Add(new Course { id = 0, name = "HTTP Fundamentals" });
        ret.Add(new Course { id = 1, name = "HTTP Fundamentals Part 2" });
        ret.Add(new Course { id = 2, name = "HTTP Fundamentals Part 3" });
        ret.Add(new Course { id = 3, name = "How to bake a cake" });

        return ret;
    }

    //uri: /api/courses/
    public IEnumerable<Course> Get()
    {
        return _courses;
    }

    //uri: /api/courses/{id}
    public Course Get(int id)
    {
        Course ret = null;
        ret = (from c in _courses where c.id == id select c).FirstOrDefault();
        if (ret == null)
        {
            //TODO: return 404
        }
        return ret;
    }

    public Course Post(Course newCourse)
    {
        newCourse.id = _courses.Count();
        _courses.Add(newCourse);
        //TODO: return 202
        return newCourse;
    }

}

public class Course
{
    public int id { get; set; }
    public string name { get; set; }
}
}

这是我的HomeController:

namespace MyTrainingApi.Controllers
{
public class HomeController : Controller
{
    public ActionResult Index()
    {
    }

    public ActionResult Course(int id)
    {
        return View(id);
    }

    public ActionResult Create()
    {
        return View();
    }
}
}

所以我有三个我正在尝试的观点:索引是所有课程的列表,课程是基于id的一门课程,而Create是应该POST一些信息并添加课程。创建视图是我在这里遇到问题的视图。这是视图代码:

enter image description here

错误消息说明:

没有MediaTypeFormatter可用于从媒体类型为“未定义”的内容中读取“课程”类型的对象。

1 个答案:

答案 0 :(得分:0)

好吧,我想通了,感谢关于在评论中指定数据的提示,我将其添加到ajax请求中

data:{id:0,name:$('#name')。val()}

现在它有效!