这是我的代码。 PayPal 向 ActionResult 发送 RowID,即 item_number
和交易 ID,即 pp_txn_id
。我只是想引用我的交易表 tblPayPalTransactions
中的行,并使用 pp_txn_id
更新它,我看到它在 PayPal 购买后发回给我。然后将照片链接发送到 DownloadPicture.cshtml
查看。
我根本想不出更新交易表的语法。其他一切我能做的。卡在这里试图完成一个项目。
//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);
}
最佳答案
您当前的代码将出现编译错误,因为 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
。但是如果您确定这些值始终是数字类型,我建议您使用数字类型作为参数(int
或 long
)。
关于c# - 如何在给定 RowID 和要更新的值的情况下更新表行。 MVC C# 林克,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45746850/