我在这里没有想法了。也许你可以建议我使用什么模式或方法。
用户应该只能为他/她的个人资料登录和更改外观。个性化的区别(AFAIK)是个性化布局仅对编辑者(他/她自己)可见。我猜,皮肤的区别在于皮肤是预定义的,但用户应该能够自己更改设置。
我需要能够向访问作者页面的每个人显示自定义布局。
好的解决方案是将布局信息保存在数据库表中。它也应该被缓存,我猜想从数据库中取出负载并在 CSS 中使用。
谢谢
编辑:
好的,我现在已经做了一些研究。想出了这样的想法。
在视图中,从数据库中获取 userId(Guid 类型)并将其设置为 ViewData: ViewData["userId"] = profile.userId;
该视图使用以下名为“Profile.Master”的 MasterPage 并链接到动态 CSS 文件:
<link href="<%= Url.Action("Style", "Profile",
ViewData["userId"]) %>" rel="stylesheet" type="text/css" />
</head>
在 ProfileController 中,从 DB 中获取 CSS 数据并将其返回给动态 CSS 视图:
public ActionResult Style(Guid userId)
{
var styles = (from s in Db.UserStyleSet.OfType<UserStyle>()
where s.aspnet_Users.UserId == userId
select s);
return View("Style", styles);
}
问题是 UserId 永远不会传递给动态 CSS 链接:
参数字典包含“Project.Controllers.ProfileController”中方法“System.Web.Mvc.ActionResult Style(System.Guid)”的不可空类型“System.Guid”的参数“userId”的空条目。
欢迎任何建议,谢谢。