Я создаю небольшой аукционный сайт с ASP.NET MVC.Я чрезвычайно новичок в ASP и не уверен, как работает весь функционал.Часть аукциона, над которой я работаю, это торги по текущему предмету.Прямо сейчас у меня есть простая проверка в моей модели (Bid):
[Required(ErrorMessage = "Please enter a maximum bid")]
[Range(0, double.PositiveInfinity)]
public decimal MaxBid { get; set; }
Когда пользователь хочет сделать ставку, ему предоставляется форма через представление «Создать», где он вводит свою максимальную ставку.,То, что я имею, просто на лету проверяет, что они действительно вводят значение и что оно неотрицательно.
Однако, более точно, они должны ввести значение выше, чем конкретное значение item.Bid.CurBid.
Существует ли способ проверки, подобный описанному выше, где он не позволяет пользователю фактически создать ставку и мгновенно выдает сообщение об ошибке?
Спасибо за любую помощь.
Редактировать: Итак, в моем методе Create в моем BidsController я добавил следующий код:
public ActionResult Create([Bind(Include = "BidId,ItemId,BidderId,MaxBid,CurBid,BidDate,BidStatusId")] Bid bid, Guid itemId, string usrId)
{
if (ModelState.IsValid)
{
Item item = db.Items.Find(itemId);
Bid activeBid = db.Bids.Find(item.ActiveBidId);
if(bid.MaxBid < activeBid.CurBid)
{
ModelState.AddModelError(string.Empty, "Your maximum bid must be greater than the current bid.");
return RedirectToAction("Create", "Bids", new {itemId, usrId});
}
Я попытался добавить эту ошибку модели, чтобы она отображалась, как и другие ошибки, в моем представлении "Создать" ставку.Однако ошибка не отображается.Это потому, что я не возвращаю модель ставок, а перенаправляю на страницу просмотра "Создать"?
Код для моего представления «Создать»:
<h4>Bid</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.MaxBid, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.MaxBid, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.MaxBid, "", new { @class = "text-danger" })
</div>
</div>
Я думал, что в сводке проверки будет отображаться мое сообщение об ошибке.