目前我在asp.net mvc项目中将会有2个或更多主题,css主题,所以我想问什么是最好的wqy来处理这样的请求。 我可以让用户写入css文件或sholud我将一些css值存储在数据库中并在用户登录后用jquery加载到css中吗? 我只是在寻找最好的方法和方法来做得很好和顺利。
答案 0 :(得分:1)
如果您有预定义的主题,用户可以为将来的登录选择,您可以在数据库中创建主题表并将相应的主题ID存储在用户中。如果用户没有选择任何主题,您将拥有默认主题。
在你的服务器上分别创建主题的css文件,每个主题都有不同的文件。
但是,如果用户在登录后对用户进行身份验证后,将其主题保存在您的数据库中。将值传递给表单上的任何隐藏字段,并使用隐藏字段中的id值更改样式表并使用javascript在每个网页上加载相同的文件。
发表评论后:
如果想要控制用户创建自己的样式,我认为基本上它将用于颜色更改和字体更改,您可以创建具有相同类名的不同css文件,并在登录后加载它们。根据您对用户的数据库中的id,这将有助于您更快地加载页面,并且数据库连接将更少。
您只需使用
获取用户ID即可if (!Page.User.Identity.IsAuthenticated)
{
MembershipUser member = Membership.GetUser();
if (member != null)
{
ProfileCommon opC = Profile.GetProfile(Email.Text);
hdnTheme.Value = opC.ThemeID;
hdnUserID.Value = member.ProviderUserKey.ToString();
}
}
在页面加载的ASPX代码中
$(document).ready(function (){
var themeid = $("#hdnTheme.ClientID").val()
var UserID= $("#hdnUserID.ClientID").val()
if (themeid == 1)// for user specific theme
<link href="includes/css/"+ UserID +".css" type="text/css" rel="stylesheet" />
else if (themeid == 2) // for the theme which you have created and already the file exists
<link href="includes/css/2.css" type="text/css" rel="stylesheet" />
else
<link href="includes/css/default.css" type="text/css" rel="stylesheet" />
});
答案 1 :(得分:0)
您应该将CSS值存储在数据库中,然后在该用户登录时加载它。这是最简单的方法。
但是,当您的网站有很多日志用户时,它可能会大大减慢网站速度。
更先进的方法是当用户填写表单并单击保存php脚本时可以生成并保存CSS文件(可以称为user_id.css)。我不记得为什么功能这样做但谷歌或这个网站是你的朋友在这里。然后,当用户登录CSS文件时,位置将保存在数据库中并在头标记中调用