После определения нового обработчика маршрута, который будет смотреть на хост, переданный в URL , вы можете пойти с идеей базового контроллера, который знает о том, к какому узлу он обращается. Это выглядит так:
public abstract class SiteController : Controller {
ISiteProvider _siteProvider;
public SiteController() {
_siteProvider = new SiteProvider();
}
public SiteController(ISiteProvider siteProvider) {
_siteProvider = siteProvider;
}
protected override void Initialize(RequestContext requestContext) {
string[] host = requestContext.HttpContext.Request.Headers["Host"].Split(':');
_siteProvider.Initialise(host[0]);
base.Initialize(requestContext);
}
protected override void OnActionExecuting(ActionExecutingContext filterContext) {
ViewData["Site"] = Site;
base.OnActionExecuting(filterContext);
}
public Site Site {
get {
return _siteProvider.GetCurrentSite();
}
}
}
ISiteProvider
- простой интерфейс:
public interface ISiteProvider {
void Initialise(string host);
Site GetCurrentSite();
}
Я отсылаю вас к Luke Sampson Blog