添加从控制器手动添加的某些字段的记录

时间:2015-10-10 14:34:05

标签: c# asp.net asp.net-mvc

我正在尝试使用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个字段添加所有字段。如果有人可以给我一个解决方案,这将是一个拯救生命。感谢。

3 个答案:

答案 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。)