2013-06-27 34 views
0

我正在构建一个相当复杂的Web应用程序,用于数据可视化和即将安装在许多服务器上的消息传递。它所依赖的SQL数据库部分被运行在服务器上的另一个应用程序填充,但是一些Web应用程序本身所需的表不会自动生成,因此我在EF DbContext的构造函数中构建了一个检查。它验证所需的表存在于数据库中,并在它们不存在的情况下创建它们。ASP.NET MVC4:如何在全新安装Web应用程序后重定向到类似安装程序的页面?

这工作得很好。现在我想检查这些表是否存在正确操作所需的一些条目。如果这些值不存在,我希望用户(任何用户)被重定向到某种设置页面,其中可以配置Web应用程序的基本设置。您可以认为它与您在Web服务器上浏览新安装的TYPO3或Wordpress时可以获得的典型安装步骤非常相似,您可以在其中设置基本设置。

现在我想知道什么是做到这一点的最佳实践:我应该创建一个“标志”,在一定的global.asax.cs静态布尔(可能像needsSetup),我检查默认的控制器,然后有条件地重定向到设置视图?或者可以/应该使用某种过滤器来完成这项工作?还是有更好的方法来做到这一点?

在此先感谢您的帮助!

回答

1

您可以创建一个基本控制器并覆盖OnActionExecuting方法,您将检查系统是否准备就绪,如果没有重定向到您的设置操作,这里是类似的帖子How to redirect from OnActionExecuting in Base Controller?。从该基类继承所有控制器(除了安装一),你会得到你想要的

+0

谢谢亚历山大,这听起来很有前途。事实上,它似乎与使用过滤器非常相似,但在较低的水平上。在每个控制器上放置过滤器属性或从定制的基础控制器派生每个控制器 - 这可能是同样的努力,因为您必须至少触摸每个控制器。我相信它效果很好,对此毫无疑问,但我想我会继续提出这个问题,同时针对这个话题提出一些更多的思路。 – Robert

+0

在我看来,从基类继承是一种“更干净”的方式来做到这一点,并且很可能您可能会使用基本控制器来处理其他事情,如异常处理等。 –

相关问题