【问题标题】:refresh a View page刷新查看页面
【发布时间】:2014-03-06 15:15:17
【问题描述】:

在我的页面中,我显示了一个订单及其产品和每个产品的价格 订单,用户可以更改每个产品的价格。

更改价格的功能运行良好,但我的问题是用户必须刷新页面才能看到价格已更新。

有什么方法可以刷新视图并同时更新价格。

价格更新功能:

public ActionResult UPPDATEPrise(int VaraId, int pris, int kundId)
{
    int _Orderid = GetLastOrderId();

    SqlConnection conn = new SqlConnection("Data Source=ENTERPRISE-PC;Initial Catalog=Fakturor;Integrated Security=True");
    String command = "UPDATE [Fakturor].[dbo].[Varor]  SET pris="+pris+" WHERE [id]="+VaraId+"";
    SqlCommand cmd = new SqlCommand(command,conn);
    conn.Open();
    cmd.ExecuteNonQuery();

    return RedirectToAction("UdateOrderDetails", new { kundId = kundId, OrderId = _Orderid });     
}

这是我返回视图的操作:

public ActionResult UdateOrderDetails(int kundId, int OrderId)
{
    //Orders procuts
    DataClasses1DataContext db = new DataClasses1DataContext();
    var t1 = (from p in db.Varors
                  join
                  op in db.OrderVarors on p.id equals op.IdVara
                  where op.IdOrder == OrderId  
                  select p).ToList();

    ViewBag.OrderItems = t1;
    //customer details
    ViewBag.id= kundId;

    //Order id
    ViewBag.OrderId = OrderId;
    // All products 
    ViewBag.varor=HamtarVaror();

    return View("Create");
}

【问题讨论】:

  • 我没有看到任何更新产品价格的代码。
  • 已编辑,这里是我的价格更新功能
  • 附带说明,您可能应该考虑使用 ViewModels 而不是 ViewBag。无论数据类型如何,您都应该考虑使用query parameters

标签: asp.net-mvc asp.net-mvc-3 view controller


【解决方案1】:

听起来浏览器正在直接缓存页面。不确定这是否可行,但作为如何防止缓存的示例(不是最佳实现,只是一个示例):

设置在 tempdata 中更新的标志。

public ActionResult UPPDATEPrise(int VaraId, int pris, int kundId)
{
  // ALL YOUR CURRENT CODE....

  TempData["IsCacheDisabled"] = true;

  return RedirectToAction("UdateOrderDetails", 
    new { kundId = kundId, OrderId = _Orderid });
}

检查并更新缓存值:

public ActionResult UdateOrderDetails(int kundId, int OrderId)
{
  // ALL YOUR CURRENT CODE....

  if (TempData["IsCacheDisabled"] != null
      && (bool)TempData["IsCacheDisabled"])
  {
    var cache = HttpContext.Response.Cache;
    cache.SetExpires(DateTime.UtcNow.AddDays(-1));
    cache.SetValidUntilExpires(false);
    cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
    cache.SetCacheability(HttpCacheability.NoCache);
    cache.SetNoStore();
  }

  return View("Create");
}

【讨论】:

  • 1-名称'filterContext'在当前上下文中不存在2-运算符'&&'不能应用于'bool'和'object'类型的操作数
  • 根据您的 cmets 更新。
  • 不,这不是答案,我仍然需要手动刷新页面以进行更改
  • 听起来像是浏览器缓存问题。
  • 试过chrome和explorer,问题依旧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 2018-03-07
  • 1970-01-01
  • 2011-12-25
  • 2014-07-16
  • 1970-01-01
  • 2018-02-17
相关资源
最近更新 更多