ユーザーがリンクをクリックすると、このメソッドはユーザーIDとその他のデータを取得し、それをデータベースに書き込みます。IDは自動的に生成されるため、ユーザーIDを追跡する方法が見つからないようです。
私は自分のベースとは別にメンバーシップベースを使用しています。userIDを見つけるために、私はUserName文字列を比較しようとしていました。このエラーが発生します:「現在のWebリクエストの実行中に未処理の例外が生成されました。」また、「抽象クラスを作成できません。」 2つのデータベースから2つの文字列を比較するためのより良い方法はありますか?それとももっと良い方法はありますか?ラムダ式を使用するのはこれが初めてです。
Where()の代わりにSingle()とFirst()を使用しようとしましたが、それでも同じエラーが発生します。
[HttpPost]
public ActionResult AddToList(Review review, int id, HttpContextBase context)
{
try
{
if (ModelState.IsValid)
{
//User user = new User();
//user.UserID = db.Users.Where(c => c.UserName == context.User.Identity.Name);
User user = new User();
Movie movie = db.Movies.Find(id);
review.MovieID = movie.MovieID;
string username = context.User.Identity.Name;
user = (User)db.Users.Where(p => p.UserName.Equals(username));
review.UserID = user.UserID;
db.Reviews.Add(review);
db.SaveChanges();
return RedirectToAction("Index");
};
}
catch (DataException)
{
//Log the error (add a variable name after DataException)
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
}
return View(review);
}