2017-12-27 880 views
0

我不明白为什么这个结果会一直返回null。我知道ID 100存在于数据库中。我正在创建可以存储到数据库中的在线表单。我希望能够通过ID将他们拉回来更新信息。MVC/Entity Framework编辑动作

public ActionResult reviewPreevent(int? id) 
{ 
    id = 100; 
    if (id.HasValue) 
    { 
     using(formEntities db = new formEntities()) { 
      var form = (from a in db.form_preevent 
       select new preeventForm 
       { 
        id = a.id, 
        meeting = a.meeting, 
        date = (DateTime)a.eventDate, 
        location = a.location, 
        p1Foyer = (bool)a.p1Foyer, 
        p2Foyer = (bool)a.p2Foyer, 
        meetingRoom = (bool)a.meetingroom, 
        skRoom = (bool)a.skroom, 
        kk1 = (bool)a.kk1, 
        kk2 = (bool)a.kk2, 
        nursery = (bool)a.nursery, 
        Sanctuary = (bool)a.sanctuary, 
        kitchen = (bool)a.kitchen, 
        parkingLot = (bool)a.parkinglot, 
        mainLeaders = a.mainleaders, 
        helpers = a.helpers, 
        backup = a.backuphelps, 
        soundboard = (bool)a.soundboard, 
        soundboardtech = a.soundboardtech, 
        projector = (bool)a.projector, 
        projectorOp = a.projectorop, 
        camera = (bool)a.camera, 
        cameraops = a.cameraops, 
        livestream = (bool)a.livestream, 
        ushers = (bool)a.ushers, 
        totalUshers = (int)a.totalushers, 
        greeters = (bool)a.greeters, 
        totalGreeters = (int)a.totalgreeters, 
        security = (bool)a.security, 
        setupTime = (DateTime)a.setuptime, 
        setup = a.setup, 
        breakdown = a.breakdown, 
        foodItems = a.fooditems, 
        groceryShoppers = a.groceryshoppers, 
        foodPrepPersonal = a.foodprep, 
        estExpense = (float)a.estexpense, 
        estIncome = (float)a.estincome, 
        expense = (float)a.expense, 
        income = (float) a.income 
       }).Where(t => t.id == id).FirstOrDefault(); 
      return View(); 
     } 
    }else 
    { 
     TempData["notice"] = "No form with ID: " + id + " was found."; 
     return View(); 
    } 
} 

还有更简单的方法来匹配一个sql类到viewmodels类吗?

+0

先构建一个最小查询:var form = db.form_preevent.FirstOrDefault(x => x.id == 100);看看是否有效。至于你的第二个问题,使用[AutoMapper](http://docs.automapper.org/en/stable/Queryable-Extensions.html)复制所有这些字段。 –

+0

请细化您的问题或标记以下答案之一为已接受。 –

回答

1

你太亲近了。将View返回给客户端时,必须返回Form变量。

public ActionResult reviewPreevent(int? id) 
{ 
    id = 100; 
    if (id.HasValue) 
    { 
     using(formEntities db = new formEntities()) { 
      var form = (from a in db.form_preevent 
       select new preeventForm 
       { 
        id = a.id, 
        meeting = a.meeting, 
        date = (DateTime)a.eventDate, 
        location = a.location, 
        p1Foyer = (bool)a.p1Foyer, 
        . 
        . 
        . 
        income = (float) a.income 
       }).Where(t => t.id == id).FirstOrDefault(); 
      return View(form); //THIS LINE MODIFIED 
     } 
    }else 
    { 
     TempData["notice"] = "No form with ID: " + id + " was found."; 
     return View(); 
    } 
}