0

私は現在、WebAPI の Pluralsight トレーニングに取り組んでおり、いくつかの問題が発生しています (サンプルをダウンロードしても機能しないため、役に立ちませんでした。コースはベータ版から作成されたもので、.Net で最終バージョンを使用しています。 4.5)。次の HTML を使用して、非常に単純なビューを作成しました。

<form onsubmit="return submitCourse();">
     <input type="text" name="name" id="name" />
     <input type="submit" value="Create Course" />
</form>
<h1 id="msg"></h1>
<script>

//1: have form - get values from form - send to API as json
//2: use form values

function submitCourse() {

    //$.ajax({
    //    url: '/api/courses',
    //    type: 'POST',
    //    dataType: 'json'
    //});

    $.ajax({
        url: '/api/courses/',
        type: 'POST',
        dataType: 'json',            
        success: function (newCourse) {
            var msg = 'New course id = ' + newCourse.id;
            $('#msg').text(msg);
        }
    });

    return false;
}

</script>

フォームが送信されると、スクリプトが最初に実行され、フォーム データが AJAX 呼び出しを介して送信されます。私が遭遇している問題は、コントローラーで Post メソッドがヒットしたときに、「newCourse」パラメーターが常に null になることです。

    public Course Post(Course newCourse)
    {
        newCourse.id = _courses.Count;
        _courses.Add(newCourse);

        //TODO : return 201
        return newCourse;
    }

さまざまなツールを調べてみると、上記のスクリプトがデータをまったく送信していないように見えます (コンテンツの長さは 0) が、その理由を理解できないようです (WebAPI と jQuery の $.ajax() 呼び出しの新機能) )。$.ajax() 呼び出し内で「data」オプションを使用して、呼び出しの本文をフォーム値に明示的に設定しようとしました (次のように: data: { 'name' : $('#name').text( ) } )、しかし、それもあまり効果がありませんでした。コンテンツの長さが変更されたように見えますが (5 に、理由は不明です)、値はまだ逆シリアル化されていません。

任意のヒント?私はこれらのテクノロジーの両方に慣れていないため、どこから始めればよいかわかりません。

4

1 に答える 1

1

$.ajax() 内の data オプションを使用して、API にデータを送信する必要があります。$("#CourseForm").serialize() というデータを使用できます。フォームに id 'CourseForm' を指定し、フォーム内の入力フィールドの名前が Course のプロパティ名と一致することを確認してからバインドします。仕事。

于 2012-10-06T17:27:44.240 に答える