首先,我看到了这个问题:ASP.NET MVC one route, two different views但它并不回答我的确切问题。如何在ASP.NET MVC中使用相同的路径创建两个视图?
我想有一个图,但具体取决于您是否已经登录同一网址/路由
我想它,所以如果一个用户进入: mydomain.com那么他们要么是带到营销登陆页面,或者他们将被带到用户登录的仪表板。
我上面贴的问题表明,我应该使用:
if (Request.IsAuthenticated) {
return View("Dashboard");
} else {
return View("Index");
}
然而,我的观点一个要求,我通过他们的特定动作,因为它需要的行动提供视图模型数据。
现在,如果我这样做:
if (Request.IsAuthenticated) {
return RedirectToAction("Index", "Dashboard");
} else {
return View("Index");
}
这工作,但重定向会导致用户的网址是仪表板指数作用,这是mydomain.com/dashboard的路线。
我怎样才能通过操作并仍然保持我的域的根网址?
然后我有代码重复。这些是在两个不同的控制器(“仪表板”vs“着陆”)和仪表板控制器有很多的存储库,没有真正有意义的着陆控制器。 –
我可能是错的,但这是唯一可以考虑维护url并仍然检索模型的方法。另一种(未经测试)的方式可能会在“仪表板”视图中的代码块中进行模型检索,但我不建议这样做,因为您“应该”保持视图精简。 –
为什么你不能建立一个完成所有繁重工作的服务,然后在'LandingPage'动作和'Dashboard'动作中使用该服务? –