0

次の JQuery/Ajax がモデルに投稿した後、次のモデルからIDを取得するにはどうすればよいですか。

JQuery:

       $.ajax({
            type: 'POST',
            url: '/api/searchapi/Post',
            contentType: 'application/json; charset=utf-8',
            data: toSend,
        }).done(function (msg) {
                alert( "Data Saved: " + msg );
        });

コントローラ:

    // POST api/searchapi
    public Void Post(Booking booking)
    {
        if (ModelState.IsValid)
        {
            tblCustomerBooking cust = new tblCustomerBooking();
            cust.customer_email = booking.Email;
            cust.customer_name = booking.Name;
            cust.customer_tel = booking.Tel;

            bc.tblCustomerBookings.Add(cust);
            bc.SaveChanges();

            long ID = cust.customer_id;

            Return ID;   <-- what do I enter here?
         }

         Return "Error";  <-- and here?
     }  

ID を jQuery スクリプトに戻すにはどうすればよいですか? また、モデルが有効でない場合、jQuery にエラーを返すにはどうすればよいですか?

助けてくれてありがとう、

マーク

4

4 に答える 4

3

それを行う1つの方法は次のとおりです。

コントローラーで:

 public Void Post(Booking booking)
    {

         //if valid
         return Json(new {Success = true, Id = 5}); //5 as an example

         // if there's an error
         return Json(new {Success = false, Message = "your error message"}); //5 as an example
     }  

あなたのajax投稿で:

$.ajax({
        type: 'POST',
        url: '/api/searchapi/Post',
        contentType: 'application/json; charset=utf-8',
        data: toSend,
        success: function(result) {
          if (result.Success) {
            alert(result.Id);
          }
          else {
            alert(result.Message);
          }
        }
});
于 2013-03-29T15:01:22.833 に答える
3

JsonResult を返すことができます

[HttpPost]
public ActionResult Post(Booking booking)
{
    if (ModelState.IsValid)
    {
        tblCustomerBooking cust = new tblCustomerBooking();
        cust.customer_email = booking.Email;
        cust.customer_name = booking.Name;
        cust.customer_tel = booking.Tel;

        bc.tblCustomerBookings.Add(cust);
        bc.SaveChanges();

        return Json(new { id = cust.customer_id });
     }

     return HttpNotFound();
 }  

次に、クライアントで単純に:

$.ajax({
    type: 'POST',
    url: '/api/searchapi/Post',
    contentType: 'application/json; charset=utf-8',
    data: toSend,
}).done(function (msg) {
    alert('Customer id: ' + msg.id);
}).error(function(){
    // do something if the request failed
});
于 2013-03-29T14:59:15.840 に答える
1

void を返すのは得策ではありません。JsonResult を使用してください

JavaScript を使用しているため、JSON を使用することをお勧めします。

return this.Json(new { customerId = cust.customer_id});
于 2013-03-29T15:01:13.440 に答える
0

戻り値を受け取るために、コントローラ メソッドは void 以外のものを返す必要があります。

コントローラーはコンパイルされますか? post メソッドには void 戻り値の型があるため、戻り ID を確認して「エラー」コマンドを返すと、コンパイルに失敗するはずです。

于 2013-03-29T15:00:04.047 に答える