编辑单个记录后,列表视图(索引控制器)不会更新

时间:2015-07-16 21:41:08

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

我有一个MVC应用程序,有多个控制器读/写MS SQL数据库,我想将所有数据库调用合并到一个控制器(称为XYZdataset.cs),而不是从每个控制器中的单个方法调用数据库控制器。

情况是:当我编辑单个记录时,在成功更新数据库后,我将被重定向到Index()方法,其中显示所有记录的列表。

使用场景1(下面),索引()视图显示更新的列表,其中包含所有新更新的值。

对于场景2,Index()视图不显示新近更新的值;但是,当我转到刚编辑的记录时,我会看到最新的值 - 因此,数据库会更新。

可能是罪魁祸首?我尝试过使用[OutputCache(Duration = 0)] 和[OutputCacheAttribute(VaryByParam =“*”,Duration = 0,NoStore = true)]在控制器和方法级别上,但它不会改变结果。

感谢您提供有关寻找解决方案的任何提示!

/*** Items CONTROLLER ***/
    // SCENARIO 1 - works like a charm, displays updated list in the view after a record has been updated:
public ActionResult Index()
    {
    var itemList = db.EntityObj.Include(i => i.Status).OrderByDescending(i => i.itemId);

      return View(itemList.ToList());
    }


    // Scenario 2 - does not display the freshly made record edits, even though the changes are recorded in the DB: 
    public ActionResult Index()
    {
    var itemList = XYZdataset.GetList("a");

      return View(itemList.ToList());
    }


namespace APPspace.DAL
{
public class XYZdataset
{

    private static MVCTestsDBEntities db = new MVCTestsDBEntities();

    public static List<ItemXYZ> GetList(string viewType)
    {
        List<ItemXYZ> itemList = new List<ItemXYZ>();

        switch (viewType.ToLower())
            {
            case "p": 
                itemList = db.EntityObj.Include(i => i.Status).Where(i=>i.statusId == 999).OrderByDescending(i => i.itemId);
                break;
            case "a": 
                itemList = db.EntityObj.Include(i => i.Status).OrderByDescending(i => i.itemId);
                break;
            default:
                itemList = db.EntityObj.Include(i => i.Status).Where(i=>i.statusId == 999).OrderByDescending(i => i.itemId);
                break;
            }

        return itemList;
    }
}

}

0 个答案:

没有答案