0

このスクリプトを実行しようとすると、500 エラーが発生します。小さなWeb APIコントローラーとデフォルトのホームコントローラーを使用して、asp.net mvc4にデモプロジェクトをセットアップしました。ここに私の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();
    }
}
}

したがって、私が実験している 3 つのビューがあります。Index はすべてのコースのリスト、Course は id に基づく 1 つのコース、Create は情報を POST バックしてコースを追加することになっています。Create ビューは、私がここで問題を抱えているビューです。これはビューコードです:

ここに画像の説明を入力

エラーメッセージには次のように書かれています:

メディア タイプ「未定義」のコンテンツからタイプ「コース」のオブジェクトを読み取るために使用できる MediaTypeFormatter はありません。

4

1 に答える 1

0

わかりました。コメントでデータを指定することに関するヒントのおかげで、このように ajax リクエストに追加しました

データ: { id: 0, 名前: $('#name').val() }

そして今、それは機能します!

于 2012-07-18T20:39:57.717 に答える