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

C# 编辑单个记录后,列表视图(索引控制器)不会更新,c#,asp.net-mvc,database,caching,C#,Asp.net Mvc,Database,Caching,我有一个MVC应用程序,其中有多个控制器读取/写入MS SQL数据库,我希望将所有数据库调用合并到一个控制器(称为XYZdataset.cs),而不是从每个控制器中的单个方法调用DB 情况是:当我编辑单个记录时,在成功更新数据库后,我被重定向到Index()方法,其中显示所有记录的列表 对于场景1(如下),Index()视图显示更新的列表,以及所有新更新的值 对于场景2,Index()视图不显示新更新的值;然而,当我转到我刚刚编辑的记录时,我看到了最新的值——因此,数据库得到更新 罪魁祸首可能是

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

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

对于场景1(如下),Index()视图显示更新的列表,以及所有新更新的值

对于场景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;
    }
}
/***项目控制器***/
//场景1-工作方式类似于符咒,在更新记录后在视图中显示更新列表:
公共行动结果索引()
{
var itemList=db.EntityObj.Include(i=>i.Status).OrderByDescending(i=>i.itemId);
返回视图(itemList.ToList());
}
//场景2-不显示新进行的记录编辑,即使更改记录在数据库中:
公共行动结果索引()
{
var itemList=XYZdataset.GetList(“a”);
返回视图(itemList.ToList());
}
名称空间APPspace.DAL
{
公共类XYZdataset
{
私有静态mvctestsdbenties db=新的mvctestsdbenties();
公共静态列表GetList(字符串视图类型)
{
List itemList=新列表();
开关(viewType.ToLower())
{
案例“p”:
itemList=db.EntityObj.Include(i=>i.Status)。其中(i=>i.statusId==999)。OrderByDescending(i=>i.itemId);
打破
案例“a”:
itemList=db.EntityObj.Include(i=>i.Status).OrderByDescending(i=>i.itemId);
打破
违约:
itemList=db.EntityObj.Include(i=>i.Status)。其中(i=>i.statusId==999)。OrderByDescending(i=>i.itemId);
打破
}
返回项目列表;
}
}

}

最终找到了答案-罪魁祸首是XYZdataset类内方法调用中的静态var声明。我创建了一个用于启动数据集类调用的私有类范围的静态变量(私有XYZdataset ds=new XYZdataset();),从XYZdataset方法return params中删除了所有“static”,然后引用ds.[method_name]来检索必要的数据集,瞧!生活又好起来了。终于找到了答案——罪魁祸首是XYZdataset类中方法调用中的静态var声明。我创建了一个用于启动数据集类调用的私有类范围的静态变量(私有XYZdataset ds=new XYZdataset();),从XYZdataset方法return params中删除了所有“static”,然后引用ds.[method_name]来检索必要的数据集,瞧!生活又好起来了。