0

値をハードコーディングしても何も挿入されません。Transaction クラスを作成したときに作成されたメソッドを使用できますか、それとも ajax 呼び出し用のカスタム メソッドを作成する必要がありますか?

jQuery/ajax 呼び出し

$("#SubmitTransaction").on("click", function () {
var div = $("#AddedItems");

var uid = $("#getUser").attr("data-logName");
var TUid = $("#uid").attr("data-tID");
var TId = $('#TiD').attr("data-tID");
var ids = $("#AddedItems li").map(function () { return this.id }).get();

var trade = {
    FromUserID: uid,
    TID: TUid,
    itemTForId: TItemId,
    items: ids
}
$.ajax({
    type: "POST",
    url: "/Transaction/Create",
    data: trade

   });
});

コントローラー: a を渡せばTransaction大丈夫だと思いました

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Transactions transaction)
    {
        if (ModelState.IsValid)
        {
            db.Transactions.Add(transaction);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(transactions);//not really concerned with where it goes right now
    }                             //just want to get the values in the db

取引モデル

       public class Transactions
{


    // all the properties
    //
    //
    public ICollection<Item> items { get; set; }//this is not being stored

}
4

1 に答える 1

1

属性を使用しているためValidateAntiForgeryToken、ajax リクエストには によって生成されたトークンが含まれている必要@Html.AntiForgeryToken()があります。例: これはあなたのフォームです:

<form>
@Html.AntiForgeryToken()

//other field
</form>

@Html.AntiForgeryToken() はデフォルトで隠しフィールドをname="__RequestVerificationToken". 次のように ajax を試すことができます。

var trade = {
    FromUserID: uid,
    ToUserID: TUid,
    itemTradedForId: TItemId,
    items: ids,
    __RequestVerificationToken: $("[name='__RequestVerificationToken']").val()
}

$.ajax({
    type: "POST",
    url: "/Transaction/Create",
    contentType: 'application/json; charset=utf-8',                     
    data: JSON.stringify(trade)
   });
});

また、指定contentType: 'application/json; charset=utf-8'してJSON.stringify(trade)

于 2013-08-28T06:41:48.063 に答える