我正在玩弄使用ASP.NET MVC3,并有一个很简单的网站,只允许您登录/创建一个帐户或列出您的帐户的详细信息。这个ASP.NET MVC ActionMethod应该有两个视图吗?
我想做主页.. bascially。如果你没有登录,请让他们登录或创建一个新帐户。否则,向他们展示他们的账户信息。简单。
所以我不知道我是否应该做这样的事情....
public ActionResult Index()
{
return User.Identity.IsAuthenticated ? View("Show") : View("Index");
}
这是一个相当人为的例子,但它基本上描述了我的问题。
我觉得这不是一个好方法..但相反,我应该重定向到一种不同的方法..就像真正的秀? ..例如。/Show/UserFoo?
我只是不确定人们在做什么 - 这是一种常见模式。
想法?
不,这不是很RESTful。 '/ index'资源不应该与登录有关。它也使得可用性更难。只需重定向到'/ login',就像@Darin所说的那样。 :)所以我猜这里的“常见模式”是保持URL相关,这是REST的重要组成部分 - 而ASP.NET MVC的特定模式是action方法中面向aspect的Authorize属性。 – bzlm 2011-02-23 10:11:50
关于使用(或不使用)不同视图,取决于认证与未认证演示文稿之间的变化。如果两者之间有很多变化,那么两种不同的观点是可以的。如果大部分是常见的,那么如果视图是使用控件(从公共基类继承的)实现的,那么您可以在运行时决定应该使用哪种控件(多态)。 – 2011-02-23 10:13:45
@bzlm,你假设如果用户没有通过身份验证,他们需要。在很多情况下,显示的页面实际上是相同的(对于已验证和未验证的用户)。对于一个简单的例子,如果你已经登录了,你可以在顶部看到你的用户名,但如果你不是,那么大部分页面的其余部分都是一样的。 – 2011-02-23 10:18:18