我网站上的用户拥有自己的个人资料页面。在那里,用户可以设置他们的数据。在编辑按钮上按此页面可编辑。
现在,另一位用户可以浏览其他用户个人资料。
所以我想知道:
ProfileController/Index
和ProfileAsAnotherUserSeeItController/Index
。首先使用配置文件所有者来设置数据,而另一个使用其他用户来查看这些数据?ProfileController/Index
,并根据一些参数决定显示哪些数据(编辑按钮,删除配置文件页面项按钮等)?答案 0 :(得分:2)
就个人而言,我会有一个控制器=> AccountsController
或UsersController
。在那里,我会有ActionMethod
名为Details
,其中列出了特定用户的所有详细信息。
如果我的网站是StackOverflow,则示例路线为:http://stackoverflow.com/users/30674/pure-krome
转换为
{controller}/details/{id}/{optional anything .. which in this case is a name, for SEO}
我还有Edit
动作方法
例如
http://stackoverflow.com/users/edit/30674
或
{controller}/{action}/{id}
现在,Details
操作方法中的逻辑将确定要在视图上显示的内容。因此,如果你想要一个编辑按钮,控制器动作方法应该把它弄清楚,如果被告知,视图将只显示它。
例如(pseduo代码)
public ActionResult Details(int userId)
{
var user = Database.Load<User>(userId);
if (user == null)
{
return HttpNotFound();
}
var viewModel = new DetailsViewModel
{
DisplayName = user.DisplayName,
Name = (user.FirstName + " " + user.LastName).Trim()
};
if (LoggedInUser != null && LoggedInUser.HasRole(Roles.CanEditThisUser)
{
viewModel.IsEditButtonVisible = true;
}
return View(viewModel);
}
,视图很简单..比如
<snip html stuff>
@if (model.IsEditButtonVisible)
{
// display edit button Html code.
}
// Display user details Html stuff..
注意事项: -
答案 1 :(得分:0)
最有意义的是,有两个操作可以提供个人资料页面的不同视图。是否在两个独立的控制器中实现这些操作并不重要。
如果将所有逻辑放在一个视图中以确定基于视图上下文显示哪些内容,则与两个完全独立的“显示”和“编辑”视图相比,可能会变得更难维护。 / p>