У меня есть модель счетМодель свойство ИД нуль в ASP.NET MVC C#
public class Expense
{
public int expenseID {get;set;}
public string expenseName {get;set;}
public int reportID {get;set;}
}
У меня есть метод контроллера, который должен передать объект расходов с точки зрения
public ActionResult Create(int reportID)
{
Expense ex = new Expense(){
reportID = reportID
};
return View(ex);
}
Тогда в представлении пользователь может установить свойство расходName, и я включил
@Html.HiddenFor(model => model.expenseID)
@Html.HiddenFor(model => model.reportID)
Затем другой метод контроллера принимает модель Expense a й должен сохранить его в базу данных, однако ExpenseID является недействительным и ошибка базы данных происходит Это метод контроллера
public ActionResult Create(Expense ex)
{
if(ModelState.IsValid)
{
db.Expenses.Add(ex);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(ex);
}
Можно ли предположить, почему свойство ExpenseID равно нулю, когда мы пытаемся добавить счет в нашей базе спасибо!
Вы отлаживали действие Create? И здесь вы видите, когда вы создаете объект расходов в действии Create, вы просто инициализируете reportid, а не indexId. И @ Html.HiddenFor (model => model.expenseID) не имеют никакого значения, кроме null. –
Из того, что я вижу, является то, что вы переходите только в 'reportID' в' Expense ex' и возвращаетесь в View. Затем, по вашему мнению, вы устанавливаете 'HiddenFor (model => model.expenseID), который ничего не имеет в нем. Я думаю, что это проблема, с которой вы сталкиваетесь. –
Вы создаете новый экземпляр объекта Expense перед тем, как передать его в свое представление в методе GET ActionResult. Но похоже, что у вас нет конструктора для назначения идентификатора для экземпляра модели. Если вы хотите, чтобы база данных назначала идентификатор при вставке, вы должны установить значение Идентификационная спецификация для этого свойства, иначе он попытается вставить строку без первичного ключа. Используете ли вы Entity Framework для доступа к данным, это может быть скорее проблемой конфигурации EF, если вы есть. – JsonStatham