2017-08-18 1 views
0

ここに私のコードです。 PayPalは、item_numberのRowIDと、pp_txn_idというトランザクションIDをActionResultに送信します。私は単純に取引テーブルの行を参照したい、tblPayPalTransactions、それを更新すると、pp_txn_idがPayPalでの購入後に私に送り返されます。その後、写真のリンクはDownloadPicture.cshtmlに送信されます。更新するRowIDとValueを指定して、テーブル行を更新する方法。 MVC C#Linq

トランザクションテーブルを更新するための構文を理解できません。私ができることは他にもあります。ここではプロジェクトを終わらせようとしている。

//ROW IN PHOTOS IS item_number, PAYPAL PAID TRANSACTION IS pp_txn_id 
public ActionResult thankyou(string item_number, string pp_txn_id) 
{ 

    var photo = db.PayPalTransactions.Where(x => x.RowID == Convert.ToInt32(item_number)); 
    photo.pp_txn_id = pp_txn_id; 
    db.SubmitChanges(); 

    var thisPaidPhoto = (from p in db.Photos 
         where p.PhotoId == Convert.ToInt32(item_number) 
         select p).FirstOrDefault(); 

    return View(thisPaidPhoto); 
} 
+0

関連しているが、あなたのパラメータは 'item_number'をint型(と'ここで(X => x.RowID == ITEM_NUMBER) ''その –

+0

int'あなたが解析してみたり、アイテム数をキャッチしようとする必要がある場合でなければなりませんれていません – Kokombads

+0

Stephen Mueckeの数値がクエリーストリングの名前/値のペアに戻ってきて、それが文字列であると確信しています。 – JustJohn

答えて

2

Whereメソッドがコレクションを返すので、あなたの現在のコードはコンパイルエラーになります。したがって、基本的にphoto変数はコレクション型になり、pp_txn_idプロパティはありません。

rowidは、そのテーブル内のレコードの一意の識別子であると仮定すると、単一のレコードを取得する必要があります。

FirstOrDefaultメソッドを使用できます。

var rowId=Convert.ToInt32(item_number) 
var photo = db.PayPalTransactions.FirstOrDefault(x => x.RowID ==rowId); 
if(photo!=null) 
{ 
    // update now 
    photo.pp_txn_id = pp_txn_id; 
    db.SubmitChanges(); 
} 
else 
{ 
    // item does not exist in table. Handle as needed. 
} 

また、入力が有効な数値でない場合Convert.ToInt32メソッドが例外をスローします、ということに注意してください。安全のためにInt32.TryParseを使用します。しかし、値が常に数値型になることが確かであれば、数値型をparam(intまたはlong)として使用することをお勧めします。

+0

ありがとうございました。私はsendinで動作するWhereを使用していましたgをビューに追加しますが、1行更新はできません。もしそれがヘビだったら、それは私にちょっとしたものだ。また、 "SubmitChanges"の代わりに "SaveChanges()"を使用しました。送信のためのメソッドが存在しませんでした。心配ない。返されるパラメータは、基本的にPayPalのやりとりの最も単純な形式です。 Definitley hackable、POST値を使用するPDTやIPNのようなものではありません。しかし、私は、非常に安価な料金で簡単な取引IDを取得することにもっと興味があります。しかし、彼らはクエスチョンにいるので、彼らは常にテキストです。 – JustJohn

+0

私はちょうどありがとうございます。クイックレスポンス、私の問題を解決し、レゲエのサーフィンやダンスを学ぶのにもっと時間を費やすことができました。深刻な – JustJohn

0
public ActionResult thankyou(string item_number, string pp_txn_id) 
{ 

    var photo = db.PayPalTransactions.SingleOrDefault(x => x.RowID == Convert.ToInt32(item_number)); 
    if(photo != null){ 
     photo.pp_txn_id = pp_txn_id; 
     db.SubmitChanges(); 


     var thisPaidPhoto = (from p in db.Photos 
          where p.PhotoId == Convert.ToInt32(item_number) 
          select p).FirstOrDefault(); 

     return View(thisPaidPhoto); 
    } 
    else 
    { 
     return View(); 
    } 
} 
関連する問題