我需要多次填写ViewData(MVC 2)吗?

时间:2010-05-19 15:22:59

标签: asp.net-mvc

我正在关注一个简​​单的ADO.NET Entity / MVC 2教程,其中我的视图是通过右键单击操作并选择“添加视图”来创建的。根据我的模型创建视图,一切都很好。我可以从数据库中查看项目的初始列表,但是当我单击编辑或删除或详细信息时,我得到'对象引用未设置为对象的实例'。它的行为就像我的数据根本不存在所以我想我可能需要再次填充ViewData?

以下是我获取数据的方式:

CheckingEntities chk = new CheckingEntities();
        //
        // GET: /CheckingMVC/

        [Authorize]
        public ActionResult Index()
        {
            ViewData.Model = chk.tblCheckings.ToList();
            return View();
        }

以下是我获取详细信息的示例:

// GET: /CheckingMVC/Details/5
         [Authorize]
        public ActionResult Details(int id)
        {
            return View();
        }

我怀疑我错误地填写了ViewData或者需要再次执行此操作,但不知道在哪里或如何执行此操作。 MVC还是一个新手。

1 个答案:

答案 0 :(得分:0)

必须在每个请求中填充传递给您的视图的值。此外,在请求期间在控制器内设置的值不能也不会在请求之间保持,因为每个新请求都会从控制器工厂创建一组全新的控制器实例。

在您的Details()操作中,您接受一个I​​D,然后返回您的View,而不会在模型中放置任何数据。而是尝试这些方面的东西:

[Authorize]
public ActionResult Details(int id)
{
   var item = Entities.SomeEntitySet.SingleOrDefault(e => e.Id == id);
   return View("Details", item);
}