2009-11-10 60 views
2

该解决方案整天躲过我。我从我的数据库中获取数据,但我想将数据保存在某处,而不是每个页面都要保存数据库。我该怎么做呢?在MVC中保存数据

我从控制器检索数据...

public ActionResult Inquiry(string Num, DateTime Date) 
{ ... 
    Bill myBill = new Bill(Num, Date, myConnections);  
    //This is where I am trying to store my data...  
    return View("Inquiry", myBill); 
} 

然后我查询页...

public ActionResult Summary(string Num, DateTime Date) 
{ ... 
    Bill myBill = new Bill(Num, Date, myConnections);  
    //... Data get retrieved here :(  
    return View("Summary", myBill); 
} 

它是足够的数据来从会话存储目光移开。是否可以保存到Model forlder中,并在aspx页面上使用继承?

我在编程世界嫩芽,更糟糕的.NET MVC

我应该能够找出哪里从那里去。有任何想法吗?

+0

你试图保存什么数据,你试图通过保存以及你到目前为止尝试完成什么? – 2009-11-10 20:42:24

+0

约需要存储20个左右的fielsd。我很害怕使用会话,这是我习惯的新手。我正在学习[Serializable]运算符。我在模型中有一个[Serializable]验证,并试图保存这种方式。我完全在这个黑暗中... – MrM 2009-11-10 20:46:39

+0

你为什么不想从数据库中得到它?根据我的经验,将它存储在两个地方会增加更多的复杂性。另一方面,如果您只是在寻找更快的页面渲染,为什么不使用ASP.NET MVC中内置的缓存工具来缓存输出呢? – 2009-11-10 20:53:55

回答

2

假设我正确理解你的问题:

你可以缓存项目。将唯一键分配给缓存对象(Cache [“uniquekey”]),然后将该唯一键传递给其他操作。

让您的操作从缓存中查找该对象并将其作为模型发送。

这里是从罗拉4名专家的article about caching,而here is an official ASP.NET learning video约缓存。

注意:请确保您在缓存对象上指定了到期日期。

+0

或缓存应用程序块更多的控制:http://msdn.microsoft.com/en-us/library/ dd203226.aspx – 2009-11-10 21:03:48

0

如果这些是在同一个控制器上的两个动作,并且基本上是在提交时将模型发回控制器(这只是您可能在做什么的猜测),那么您可以使用表单值集合和的UpdateModel方法,甚至可以使用这样的强类型的动作(ISH):

public ActionResult Inquiry(string Num, DateTime Date) 
{ ... 
    Bill myBill = new Bill(Num, Date, myConnections);  
    //This is where I am trying to store my data...  
    return View("Inquiry", myBill); 
} 

public ActionResult Summary(Bill bill) 
{  
    //... do stuff 
    return View("Summary", bill); 
} 

这种方式,你都可以从天然来源的信息;即将到来的账单。你可以在这个过程中进行处理,保存它,改变它,把它扔到另一个模型中,然后把它放回视图中,而不必重新加载它。

我也是aspnet mvc的新手,而且大部分时间我都在努力处理数据输入和输出,所以我缺少架构明智的东西。

斯科特·古的nerddinner章节在搞清楚一些内容时非常有帮助。