Я выполнил поиск в базе данных, используя другое поле. В базе данных всего 1 элемент.Идентификатор сущности не был правильно отображен из базы данных во время редактирования
var product= db.products.FirstOrDefault(x => x.nonID == id);
return product;
фактический идентификатор элемента, например, было: 112 nonID был 888
, когда это было возвращение для просмотра с строки запроса ID = 888
@Html.HiddenFor(model => model.ID)
скрытое поле было на карте to nonID вместо сопоставления фактическому идентификатору в базе данных, которая была восстановлена.
Это вызвало у меня проблему с сохранением, когда идентификатор не найден. кто-нибудь знает, почему это происходит? продукт класса
public class product
{
[Display(Name = "ID")]
[Required(ErrorMessage = "Required.")]
public long ID { get; set; }
[Display(Name = "Search No")]
[Required(ErrorMessage = "Required.")]
public string nonID { get; set; }
детали страницы для редактирования страницы событие
<input type="button" class="btn btn-info" value="Edit" onclick="location.href='@Url.Action("Edit","Product",new { id = Model.nonID})'" />
public Product GetProductDetails(string id)
{
Product product = db.Products.FirstOrDefault(x => x.nonID == id);
return product;
}
редактировать страницу Скрытое поле
@Html.HiddenFor(model => model.ID)
страница редактирования строки запроса
Product/Edit/888
редактировать страницу детали получать продукт
public ActionResult Edit(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var product = service.GetProductDetails(id);
ViewBag.type = new SelectList(service.GetAllProductLibrary(), "ProductTypeID", "ProductTypeName", product.type);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}
при сохранении редактирования элемента. объект предполагается использовать идентификатор 112, чтобы сохранить .Но идентификатор не был на карту для просмотра во время заполнения
Вам необходимо показать код в вашем методе контроллера, а модель –
добавила коды –
Вы по-прежнему не указали код для метода 'Edit' GET (который является самым важным битом) –