【发布时间】:2011-02-23 10:04:48
【问题描述】:
我正在使用 ASP.NET MVC3 并有一个非常简单的网站,只允许您登录/创建帐户或列出您的帐户详细信息。
我想制作主页.. 基本上就是这样。如果您没有登录,请让他们登录或创建一个新帐户。否则,向他们展示他们的帐户详细信息。很简单。
所以我不确定我是否应该做这样的事情......
public ActionResult Index()
{
return User.Identity.IsAuthenticated ? View("Show") : View("Index");
}
这是一个非常人为的例子,但它基本上描述了我的问题。
我觉得这不是一个好方法.. 但是我应该重定向到不同的方法.. 就像真正的 Show 一样? ...例如。 /Show/UserFoo ????
我只是不确定人们在做什么——这是一种常见的模式。
想法?
【问题讨论】:
-
不,这不是很 RESTful。
/index资源不应该与登录有任何关系。它也使可缓存性更难。就像@Darin 建议的那样,只需重定向到/login。 :) 所以我猜这里的“通用模式”是保持 URL 的相关性,这是 REST 的重要组成部分 - 而 ASP.NET MVC 的特定模式是操作方法上面向方面的 Authorize 属性。 -
关于使用(或不使用)不同的视图,这取决于经过身份验证的演示文稿与未经身份验证的演示文稿之间有多少变化。如果两者之间发生了很多变化,那么两种不同的观点就可以了。如果大部分是常见的,那么如果视图是使用控件(从公共基类继承)实现的,那么您可以在运行时决定应该使用哪些控件(多态性)。
-
@bzlm,您假设如果用户未通过身份验证,则他们需要。在许多情况下,显示的页面实际上是相同的(对于经过身份验证和未经身份验证的用户)。对于(一个简单的)示例,在 SO 上,如果您已登录,您会在顶部看到您的用户名,但如果您不是,则页面的其余部分大部分是相同的。
-
@Shiv 我什么都不假设。该问题特别指出“如果您没有登录,请让他们登录或创建一个新帐户。否则,向他们显示他们的帐户详细信息”。 ;)
-
@bzlm,你说得对。我以某种方式错过了。:)
标签: c# .net asp.net-mvc views