// Obscure naming convention bug with EF - don't name parameters the same as model properties... // http://www.martin-brennan.com/net-mvc-4-model-binding-null-on-post/ public ActionResult Create(ItemBid bidd) { var allBids = from b in _db.ItemBids join i in _db.Items on b.ItemId equals i.Id where i.Id == bidd.ItemId orderby b.Bid descending select b; var minumItemBid = from i in _db.Items where i.Id == bidd.ItemId select i; int minumBid = allBids.Any() ? Math.Max(allBids.First().Bid, minumItemBid.First().MinimumBid) : minumItemBid.First().MinimumBid; // for this to work, make sure to set @Html.ValidationSummary(false) in the Create.cshtml View if (bidd.Bid <= minumBid) ModelState.AddModelError("Bid", "Bid must be greater than $" + minumBid.ToString()); else bidd.UserId = (int)Membership.GetUser().ProviderUserKey; if(ModelState.IsValid) { _db.ItemBids.Add(bidd); _db.SaveChanges(); //return RedirectToAction("Index", "Bids", new { id = bidd.ItemId }); return RedirectToAction("Index", "Home"); } return View(bidd); }
public ActionResult Create(int itemId) { var allBids = from b in _db.ItemBids join i in _db.Items on b.ItemId equals i.Id where i.Id == itemId orderby b.Bid descending select b; var minumItemBid = from i in _db.Items where i.Id == itemId select i; int highestBid = allBids.Any() ? Math.Max(allBids.First().Bid, minumItemBid.First().MinimumBid) : minumItemBid.First().MinimumBid; object userId = Membership.GetUser().ProviderUserKey; var myBid = new ItemBid(); myBid.Bid = highestBid + 1; myBid.ItemId = itemId; myBid.UserId = (int)userId; return View(myBid); }