Я создаю проект. NET MVC, и у меня возникла ситуация, когда форма Создать для модели не принимает ввод пользователя и по-прежнему отправляет 0, даже когда я ввожу другое значение. Как вы можете видеть ниже, поле не может принимать значение 0, поэтому это делает модель недействительной.
Соответствующее поле модели:
public class Inventory
{
[Key]
[Display(Name = "Inventory ID")]
public int InventoryID { get; set; }
[Required]
[Range(1, int.MaxValue, ErrorMessage = "Please enter a value larger than 0")]
public int QTY { get; set; }
GET и POST Controller:
// GET: Inventories/Create
public IActionResult Create()
{
ViewData["BinID"] = new SelectList(_context.Bins, "BinID", "BinName");
ViewData["ProductID"] = new SelectList(_context.Products, "ProductID", "ProductDescription");
return View();
}
// POST: Inventories/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("InventoryID,Quantity,BinID,ProductID")] Inventory inventory)
{
if (ModelState.IsValid)
{
_context.Add(inventory);
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException ex)
{
// send message to view
ModelState.AddModelError(string.Empty, "An inventory for this bin and product already exists");
ViewData["BinID"] = new SelectList(_context.Bins, "BinID", "BinName", inventory.BinID);
ViewData["ProductID"] = new SelectList(_context.Products, "ProductID", "ProductDescription", inventory.ProductID);
return View(inventory);
}
return RedirectToAction(nameof(Index));
}
ViewData["BinID"] = new SelectList(_context.Bins, "BinID", "BinName", inventory.BinID);
ViewData["ProductID"] = new SelectList(_context.Products, "ProductID", "ProductDescription", inventory.ProductID);
return View(inventory);
}
Просмотр:
<div class="form-group">
<label asp-for="QTY" class="control-label"></label>
<input asp-for="QTY" class="form-control" />
<span asp-validation-for="QTY" class="text-danger"></span>
</div>
РЕДАКТИРОВАТЬ: переход к публикации c int? QTY не работает - такая же проблема сохраняется, теперь только ошибка - поле QTY является обязательным, поскольку значение по умолчанию HTML равно нулю вместо 0. Поле ввода просто не сохранит значение.