我正在构建一个可供多个客户端使用的Web应用程序。我们希望Client1的URL显示如下:
http://www.blah.com/client1/ .....
并且Client2显示如下:
等等。所以我将路由表设置为:
routes.MapRoute(
name: "Company",
url: "{company}/{controller}/{action}/{id}",
defaults: new {company = "", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
这是第一个问题。到目前为止,有没有人看到我如何设置路由表有什么问题?如果有人指定公司名称“ClientX”,我想确保第一条路线被执行,否则如果它们只指定一个控制器/动作,那么我希望第二条路线被执行。
我的下一个问题是,以我的方式获取他们指定的公司名称是否被视为不良形式。
我有一个基本控制器,在其Initialize方法中我执行以下操作:
protected override void Initialize(RequestContext requestContext)
{
if(requestContext.RouteData.Values.ContainsKey("company"))
{
CompanyName = (string)requestContext.RouteData.Values["company"];
}
base.Initialize(requestContext);
}
“CompanyName”是一个属性:
public string CompanyName { get; private set; }
我以前从未搞过MVC中的默认路由(我从来没有需要),我想确保我没有做一些愚蠢的事情。
答案 0 :(得分:0)
路由表没问题,这通常是在MVC领域和Web API中完成的。一切都很好。
然而,在控制器中初始化公司,它并不坏,只是通常你会在action方法中添加一个名为company of string的action参数。如果控制器中的所有或许多操作都需要这些信息,那么最好像初始化阶段一样在初始化阶段读取它。在这里,这取决于你。它有两种方式。