2016-06-01 5 views
0

私は現在、ユーザーが新しい義務を投稿した後、職務のリストを更新しようとしています。私はこれを行うAjaxを使用しようとしています。しかし私はコントローラに投稿してから自分のリストに追加するためにajaxを使う方法を分かりません。私のajaxメソッドでデータフィールドを使用するにはどうすればいいですか?リストを更新するにはどうすればいいですか?ajaxを使用してリストを更新する。

マイコントローラ:

 [HttpPost] 
     Public ActionResult CreateDuty(PartialViewModel d) 
{ 
     db.DutiesTable.Add(d.OneDuty); 
        db.SaveChanges(); 
        pv.DutyList = db.DutiesTable.ToList(); 

        return View("Index"); 
    } 

私のAjaxの方法:

<script> 
    $('#getDuty').click(function() { 
     $.ajax({ 
      type: 'POST', 
      url: "/Home/CreateDuty", 
      data: {d : d} 
     }).success(function (data) { 
      alert(data + status); 
     }); 
    }); 
</script> 

答えて

0

ない十分な情報。 どこから来たのか、それは何ですか(javascript)。

あなたのEFコードでは、DutiesTableにPartialViewModelが含まれていないと仮定します。そのため、ビューモデルとEFモデルクラスの間でマッピングが必要です。

[HttpPost] 
Public ActionResult CreateDuty(DutyViewModel d) 
{ 
    Duty newduty = new Duty(){ /*map values from d to fields here*/} 
    db.Duties.Add(newduty); 
    db.SaveChanges(); 
    return View("Index"); 
} 

あなたは、コントローラ上にデータポストを持っているし、EFで保存したら、あなたのjavascriptの可能性が最も高いか、単純な成功/失敗した場合、更新するエンティティ(バックPartialViewModelにマッピングされたのコピーを必要とする場合に決定する必要がありメッセージは十分で、その側で必要なことをしてください。 「ここから私のリストに追加してください」 - どのようなリスト?

+0

私のAjaxメソッドのdデータフィールド?私はこれがコントローラの場合と同じであることを期待していましたが、Ajaxの使い方はあまりよくありません。 "mappedduty"変数はどこから来ましたか?リストでは、それがDutyListです。それは可能ですか?新しい義務がその上に追加されるように更新するか? – Seb

+0

私は、より明白にするために名前を変更したもので私の答えを更新するつもりです。 –

+0

更新は役に立ちますか?要点は、ビューモデルクラスがデューティクラスと同じではないということです。テーブルのEFクラスとUIのビューモデルをマップする必要があります。あなたのためにそれを単純化することができるいくつかのフレームワークがあります。最も一般的なのはオートマッパです。 –

関連する問題