2010-11-01 104 views
3

我正在处理一个.net mvc web应用程序,它在主页上有一堆Web部件。我意识到webpart是一个.net形式的术语,但不知道要命名这些迷你部分。所以无论如何,现在这些部分在页面呈现时被调用,但最终我会插入JQuery并使用AJAX调用这些部分。当用户在主页和后面之间导航时,这些迷你部分或小部件将需要保持状态。使用.net格式,页面状态信息保存在视图状态,但使用.net mvc,这是不可用(谢天谢地)。ASP.NET MVC状态管理

那么,有没有一个框架已经为这样的MVC功能创建?如果不是,处理这种情况的最佳方法是什么?我正在考虑利用HttpContext对象并将所有内容存储在那里,但不确定该对象是否有任何大小限制。

+0

他们被称为“局部视图”。 – 2010-11-01 14:49:52

+1

我会尽量避免在MVC中管理“状态”,看看ASP.NET窗体(ViewState)的用途是什么。 – dotariel 2010-11-01 14:51:08

回答

0

您可以使用输出缓存或数据缓存,它们都受到MVC 1.0/2.0的支持。

+0

我不想缓存数据,但试图存储每个局部视图的状态。例如,如果用户最小化其中一个小部件,我希望应用程序记住下次该用户仅导航到该会话的主页。我认为缓存对于这种情况并不明智。 – Skadoosh 2010-11-01 15:12:06

+0

查看http://blog.stevensanderson.com/2008/10/15/partial-output-caching-in-aspnet-mvc/ 或 http://www.c-sharpcorner.com/UploadFile/ dhananjaycoder/outputcachinginmvcapplication02222009222109PM/outputcachinginmvcapplication.aspx – john 2010-11-01 15:24:43

2

就像在MVC中的其他任何东西一样,你将需要在某处存储状态。正如其他用户指出的那样,使用局部视图可以减少设计的复杂性,因为您可以让控制器只处理这些小部件。然后他们可以负责保存/恢复/跟踪该部分的状态或信息。 (这可能是使用数据库,在进程内存中,无论如何)。

如果您将控件放在母版页中,您可以从其他逻辑中删除部件的实现,因此您不必担心捕获并将与这些部分相关的数据与您模型的其余部分一起用于您的视图。

如果将部件分开,就可以更容易地对它们进行AJAX化,因为即使它们在同一时间渲染,它们已经独立于视图数据运行。