这就是我最终所做的
首先,感谢那些回复我帖子的人,你们帮助我思考了我能做些什么。最后,我所做的只是一系列相当简单的事情。就是这样:
我将我的新域 www.b.com 指向我的网络主机,因此键入 www.b.com 将指向 www.a.com (CNAME) 的根
在我的解决方案中,我做了以下
我有一个所有控制器都派生自的 BaseController,并在其中声明了 IsPageB
public class BaseController : Controller
{
//
// GET: /Base/
...
protected bool IsPageB = false;
....
}
在 BaseController 中,我根据主机设置它的值
protected override void OnActionExecuting(ActionExecutingContext ctx)
{
...
IsPageB = Request.Url.Host.Contains("b.com");
...
}
所以在每个控制器中,我检查 IsPageB
例如,在主页中,我只是根据此变量切换视图
public ActionResult Index()
{
if (IsPageB)
return View("B_Home");
return View();
}
在视图内部,我要么使用在控制器中设置的 ViewBag.IsPageB,要么如果没有生成视图的控制器,我只需设置一个局部变量
@{
bool isPageB = Request.Url.Host.Contains("b.com");
}
然后根据这个值生成标记。
到目前为止一切都很好,也许有更聪明的方法可以做到这一点,但就我的目的而言,90% 的底层代码与 a 或 b 相同,并且一些输出发生变化,这很好。但我一直在寻找更清洁的方法。例如,有什么方法可以在不使用 ViewBag 或将其附加到模型的情况下访问视图中的 IsPageB 变量?