我有一個模型費用模型ID屬性空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);
}
然後控制器方法用戶可以設置費用名稱屬性,我已包含
@Html.HiddenFor(model => model.expenseID)
@Html.HiddenFor(model => model.reportID)
然後另一個控制器方法接受費用模型a第二應該把它保存到數據庫然而expenseID爲null,並且發生數據庫錯誤 這是控制器方法
public ActionResult Create(Expense ex)
{
if(ModelState.IsValid)
{
db.Expenses.Add(ex);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(ex);
}
任何人都可以提出爲什麼expenseID屬性爲null,當我們嘗試和增加費用到我們的數據庫的感謝!
您是否調試過動作創建?在這裏你看到,當你創建費用對象的行爲創建你只是初始化reportid不是費用ID。和@ Html.HiddenFor(model => model.expenseID)除null外沒有任何值。 –
從我可以看到的是,您只通過'Expense ex'對象中的'reportID'並返回到View。然後在你的視圖中設置一個'HiddenFor(model => model.expenseID),它沒有任何內容。我認爲這是你面臨的問題。 –
在將GET ActionResult方法傳遞給視圖之前,您正在創建對象Expense的新實例。但它看起來像你沒有一個構造函數來爲模型實例化分配一個ID。如果您希望數據庫在插入時分配ID,您需要在該屬性上將Identity Specification設置爲true,否則將嘗試插入沒有主鍵的行。你是否使用實體框架進行數據訪問,如果你是這樣的話,這可能更像是一個EF配置問題。 – JsonStatham