编辑页面不显示数据

时间:2011-10-14 20:45:48

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

非常感谢任何帮助!

在我偶然发现这一切之前,一切都很顺利:(

当我点击我的显示表上的编辑时,它会转到编辑vue,在我的id文本字段中输入0,但表单的其余部分是空白的吗?

我有什么:

 public ActionResult EditProduct(int? id)  
 {
    Product prod = new Product();

    return View(prod); 
 } 

谢谢大家!

3 个答案:

答案 0 :(得分:0)

在您的代码中,您正在创建一个新产品,然后将其发送到视图,因此它将为空白并且ID为零。

您需要检索您的产品,然后将其传递给视图。也许是这样的:

public ActionResult EditProduct(int? id)  
{
    Product prod = _productRepository.Get(id);// code to retrieve product from database
    if (prod != null)
    {
       return View(prod); 
    }
    else
    {
       return RedirectToAction("Error"); // or whatever...
    }
} 

答案 1 :(得分:0)

您需要通过ID从数据存储加载产品,而不是创建新实例。类似的东西:

return View(db.Products.Find(id))

开始使用MVC的好地方是http://www.asp.net/mvc。有很多关于数据驱动的mvc网站的教程。

答案 2 :(得分:0)

要创建存储库,请使用方法Get,GetAll,Save等创建名为IProduct的接口。您的存储库类实现(即实现IProductRepository的ProductRepository.cs)具有对ObjectContext的引用(或者DbContext使用的是ef 4.1)< / p>

有些人更喜欢拥有一个通用的IRepository界面 - 但据我说'通用存储库是一个童话故事'

完成后,创建

YourRepository repository = new Repository(); //Some choose to pass in a context or inject one via unity, ninject, etc. this is a basic example.

您的存储库有一个方法

private YourContextName _context = new YourContextName();
public Product Get(int productId)
{
  return _context.Products.Where(o=>o.ProductId=productId).Single();
}

这就是它的全部内容。当然有更高级的实现,但它是相当基础的。

http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/20/using-repository-pattern-with-entity-framework.aspx

http://www.codeproject.com/KB/database/ImplRepositoryPatternEF.aspx

http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx