2017-08-23 13 views
0

私はjクエリ呼び出しでデータを渡します。IDはデータベース上に自動インクリメントされたキーがあります。そのため、スクリプトに変数を作成してそれを模倣しました。JSONデータをWebApiに渡してデータベースを変更しない

webApiのメソッドは正常なリクエストを示していますが、データベースの変更を実行するコードはブレークポイントを実行するとヒットしません。

これはJqueryかMVC関連かどうかわかりませんので、両方にタグを付けるつもりです。ポストウェブAPIの要求がヒットしている

証明、http://imgur.com/a/TZSA4

WEBAPIルート:

config.MapHttpAttributeRoutes(); 
config.Routes.MapHttpRoute (
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

スクリプト:

<script > 
    var id = 29; 
    function populateTab() { 

    } 

    var addvisible = document.getElementById("btnshowadd"); 
    $("#addpostform").hide(); 
    addvisible.onclick = function() { $("#addpostform").show() }; 
    $("#hideadd").click(function() { 

     var postObject = { 
      ID: id, 
      Title: $("#PostTitle").val(), 
      Body: $("#PostBody").val(), 
      Image: $("#PostImage").val(), 
      DateTime: Date.now() 
     }; 


     jQuery.ajax({ 
      type: "POST", 
      data: JSON.stringify(postObject), 
      url: "../api/posts", 
      contentType: "application/json" 

     }); 
    id++; 
}); 

WEBAPIポスト:

[ResponseType(typeof(Post))] 
[HttpPost] 
[Route("api/Posts")] 
public IHttpActionResult PostPost(Post post) 
{ 
    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 
    db.Posts.Add(post); 
    db.SaveChanges(); 
    return CreatedAtRoute("DefaultApi", new { id = post.ID }, post); 
} 
+0

あなたはapi行を行単位でチェックしてみましたか?あなたのポストパラメタは完全な値を持っていますか? – Redan

+0

@Redanはいオブジェクトが渡されたときに唯一の義務的値が訂正されます。 –

+0

@TahaMouhtijこれはルーティングの問題です。アクションに当たっていない場合は、あなたが投稿しているURLがAPI用に設定されたルートに一致していません。問題を再現するために使用できる[mcve]を提供してください。現在十分な情報が提供されていません。 – Nkosi

答えて

0

以下を試してください: idに値を渡さないで、値をnullにしてください。

あなたはそれが自動インクリメントIDであると述べたので、データベースはID作成部分を処理する必要があります。

私はそれがうまくいけば教えてください。また

(擬似コード、いけないしてくださいコピーペースト)のような何かをしようと

結果= db.savechanges();

場合(結果> 1){

//リダイレクトコード

}他{

//再試行ロジック又は

何か}

がでブレークポイントを置きます結果が表示され、インテリセンスでエラーの詳細が表示されるかどうかを確認してください。

+0

ありがとうございました:) –

0

私が持っていた主な問題は、Jeylaniの答えに従った後の日付です。IDは自動インクリメントされているのでIDを指定してはならないことがわかりました。 date.now()の代わりに;

関連する問題