Asp.Net MVC通过Url识别网站

时间:2010-01-15 17:21:30

标签: asp.net-mvc asp.net-mvc-routing

我有一个支持多个网站的应用程序。该网站将根据网址确定。

例如 http://myapp/site/abc123/ ... 和 http://myapp/site/xyz123/ ...

站点代码将驱动许多功能,例如主题,可用模块等......

问题:

1-)我需要验证站点代码是否有效,如果不是,则应将用户引导至信息页面。我正在考虑使用IRouteConstraint,这是否合适?还有其他/更好的选择吗?

2-)任何陷阱都采用这种方法(使用url识别网站)?有更好的方法吗?

解决方案

我最终创建了一个Custom ActionFilter并检查了OnActionExecuting事件中的sitecode。这看起来效果很好,比IRouteConstraint更合适。

2 个答案:

答案 0 :(得分:2)

我实施的系统使用Urls识别单个站点中的唯一页面内容,并且路由过程非常简单。话虽这么说,您可能需要考虑在MVC应用程序中使用Areas。使用区域,您可以在网站上拥有多个部分,这些部分都有自己的MVC结构,可以半独立运行。

基本上,您将有一个基本路由定义,其中列出了一些默认值,然后其余的“站点”将定义自己的路由,这些路由指向位于不同位置的控制器和视图。它很容易设置,你只需要确保你使用的是ASP.NET MVC 2.0版。这是ASP.NET MVC Areas and Routes上一本体面的教程。在MVC 2.0支持的当前模型中,每个区域都有一个Web项目,但这不一定是必需的。如果您正在寻找另一个技术示例,Phil Haacked会为ASP.NET MVC Single Project Areas提供一些代码,尽管您个人可能会从第一篇文章中获益更多。

只要您定义了具有明确且可衡量约束的良好路线,您就不应该在布置您所描述的网站时遇到太多麻烦。

答案 1 :(得分:0)

我最终创建了一个Custom ActionFilter并检查了OnActionExecuting事件中的sitecode。这看起来效果很好,比IRouteConstraint更合适。