我正在尝试使用asp.net mvc 4
& EF 6
我希望使用.Add(model)
添加记录。但我有些领域只需要手动从控制器输入数据。我需要手动输入这些字段&其余字段为.Add()
。但由于手动字段未添加,我收到验证错误。这是我的代码,
控制器
[HttpPost]
public ActionResult Create(FlatManagement FlatTable)
{
FlatInfo model = FlatTable.Flat;
if (ModelState.IsValid)
{
var getUser = db.Clients.Where(a => a.username == User.Identity.Name).FirstOrDefault();
FlatInfo AddFlat = new FlatInfo();
AddFlat.admin_id = getUser.serial;
AddFlat.user_id = 0;
AddFlat.user_name = "N/A";
AddFlat.user_phone = "N/A";
db.FlatInfoes.Add(model);
db.SaveChanges();
}
return View();
}
如何手动添加某些字段,而其他字段只能使用.Add()
方法添加?因为有很多字段,所以我不想手动为3-4个字段添加所有字段。如果有人可以给我一个解决方案,这将是一个拯救生命。感谢。
答案 0 :(得分:1)
您当前的方法会创建FlatInfo
FlatInfo AddFlat = new FlatInfo();
并设置它的一些属性,但是你永远不会对它做任何事情。由于您保存的FlatInfo
实例是FlatTable
的属性,因此您需要更新该实例。
[HttpPost]
public ActionResult Create(FlatManagement FlatTable)
{
FlatInfo model = FlatTable.Flat; // this is the instance you need to update
if (ModelState.IsValid)
{
var getUser = db.Clients.Where(a => a.username == User.Identity.Name).FirstOrDefault();
model.admin_id = getUser.serial;
model.user_id = 0;
model.user_name = "N/A";
model.user_phone = "N/A";
db.FlatInfoes.Add(model);
db.SaveChanges();
}
return View();
}
答案 1 :(得分:0)
我很确定您遇到的问题是因为您在添加后忘记了SaveChanges。
db.FlatInfoes.SaveChanges();
答案 2 :(得分:0)
您可以初始化类的构造函数中的字段:
public class FlatInfo
{
public FlatInfo()
{
user_id=0;
user_name = "N/A";
user_phone = "N/A";
// and so on
}
}
在控制器中,您只需设置AddFlat.admin_id
(顺便说一下,应该将其命名为addFlat
。)