我遇到了缓存问题,并尝试了所有我能找到的解决方案!
我有一个简单的创建屏幕,其中一行插入到表中(尽管在编辑现有行时我也遇到了同样的问题)。
创建行后,用户将返回到上一个屏幕,该屏幕仍显示旧数据。(与编辑相同的问题)
刷新页面没有区别。不同的浏览器有同样的问题。数据已成功添加到数据库中。只有通过重新启动应用程序,它才会刷新屏幕上的数据。
我尝试过的事情:
1:
DataContext.Refresh(RefreshMode.OverwriteCurrentValues)
2:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
3:
ModelState.Clear()
这些都没有任何区别。我以前在编辑或创建时没有遇到过这个问题,所以我一定遗漏了一些东西。非常感谢任何帮助!
以下是控制器的相关部分:
ISISDataContext db = new ISISDataContext(StudentISIS.Properties.Settings.Default.ISISConn.ToString());
public ActionResult Index()
{
var student = (ISIS2Models.Student)Session["CurrentUser"];
return View(student);
}
public ActionResult STGCreate(int id)
{
var enrolment = db.Enrolments.Single(e => e.EnrolmentID == id);
return View(enrolment);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult STGCreate([Bind(Exclude = "Id")] StudentGrade STGToCreate, FormCollection collection)
{
var STG = new StudentGrade();
STG.Grade = collection["StudentTG"];
STG.EnrolmentID = int.Parse(collection["Enrolment"]);
STG.DateChanged = DateTime.Now;
db.StudentGrades.InsertOnSubmit(STG);
db.SubmitChanges();
return RedirectToAction("Index");
}
编辑:
以下是索引视图中的代码,它遍历注册以显示成绩:
<%foreach (var en in Model.Enrolments) {%>
//Some table stuff
<td>
<%try
{ %>
<%= Html.ActionLink(en.StudentGrades.Grade,"STGEdit",new {controller = "Progress", id = en.StudentGrades.StudentGradeID})%>
<%}
catch (NullReferenceException) {%><%= Html.ActionLink("Set","STGCreate",new {controller = "Progress", id = en.EnrolmentID})%><% } %>
</td>
//Some more table stuff
<%}%