zoukankan      html  css  js  c++  java
  • 实现qq邮箱换肤(第一季 )

    本文代码要实现的目标:显示可供用户选择的风格模版,并允许其更新选择。

    简单流程:

    1、从数据库获取风格模版的列表。

    2、获取一个用户所选择的风格模版,若该用户从未选择风格模版,那么使用默认选中项

    3、用户更改风格模版后保存。

     使用的技术:三层架构,mvc,linq,jquery。

    废话不多说,直接上图片:

    之前的风格:

    选择后的风格:

     

    局部视图(partialView)

    代码
    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<BL.Style>>" %>


    <% 
        SelectList list
    =null;
        
    if (ViewData["selectList"] != null) {
            list 
    = ViewData["selectList"as SelectList;
      }
    %>




    <div  class="itemcontent-font btnHyperLink" style=" text-align:center; 50%;" >
        请选择样式模版:

        
    <%=Html.DropDownList("aa", list)%> 
        
        
    <br />

        
    <%=
            Html.ActionLink(
    "取 消"nullnullnew { href = "javascript:void(0)", onclick = "$('div#workArea').css('display','none');" })
        
    %>|
        
    <%=
            Html.ActionLink(
    "保 存"nullnullnew { href = "javascript:void(0)", onclick = "return submitStyle();" })
        
    %> 
    </div>

     点击“保存”触发的javascript脚本

    //提交个人风格模版
    function submitStyle() {
        
    var styleID = $('#aa').get(0).value;
        window.location.href
    =。。/../SiteStyle/SubmitStyle?styleID=+ styleID
        
    return false;
    }

    Controller中的代码:

    代码
    /// <summary>
            
    /// 可供选择的风格模版列表,用户如选择了风格模版,那么StyleID作为下拉框的被选择项;
            
    /// 如果用户没有选择风格模版,那么选中项默认为StyleID==1的项
            
    /// </summary>
            
    /// <returns></returns>
            public ActionResult StyleCanSelected(int typeID) 
            {
                Guid authorGuid 
    = Helpers.Helper.GetVisitor().UserGuid;
                
    //获取样式模版列表
                List<BL.Style> styles = obj.GetStylesByType(typeID);
                
    //获取用户选中的样式模版
                BL.Style style = obj.GetStyleByUser(authorGuid);
                
    //用户未选择样式模版时,默认StyleID == 1的模版
                if (style == null
                {
                    style 
    = new BL.Style() { StyleID = 1 };
                }

                
    //用户绑定dropdownlist的数据,styles为业务逻辑的数据,
                
    //StyleID为value字段,StyleDescription为text字段,style.StyleID为选中项的value值
                SelectList selectList = new SelectList(styles, "StyleID""StyleDescription",style.StyleID);

                ViewData[
    "selectList"= selectList;
                
    return View(styles);
            }


            
    /// <summary>
            
    /// 提交用户的选择,保存到数据库
            
    /// </summary>
            
    /// <param name="styleID"></param>
            
    /// <returns></returns>
            public ActionResult SubmitStyle(int styleID) 
            {
                Guid authorGuid 
    = Helpers.Helper.GetVisitor().UserGuid;
                obj.SetupStyle(authorGuid, styleID);
                
    //刷新设置页面
                return RedirectToAction("PersonSetting""Person"new { ownerGuid = authorGuid });
            }

    业务逻辑层(BLL)中代码:

    代码
     public class CustomStyleBL
        {
            CustomStyleRep obj 
    = new CustomStyleRep();

            
    /// <summary>
            
    /// 获取一种类型的风格模版列表
            
    /// </summary>
            
    /// <param name="typeID"></param>
            
    /// <returns></returns>
            public List<Style> GetStylesByType(int typeID) 
            {
                
    return  obj.GetStylesByType(typeID).ToList();
            }

            
    /// <summary>
            
    /// 设置用户风格模版
            
    /// </summary>
            
    /// <param name="userGuid"></param>
            
    /// <param name="styleID"></param>
            
    /// <returns></returns>
            public int SetupStyle(Guid userGuid, int styleID) 
            {
                
    return obj.SetupStyle(userGuid, styleID);
            }

            
    /// <summary>
            
    /// 获取一人的风格模版
            
    /// </summary>
            
    /// <param name="userGuid"></param>
            
    /// <returns></returns>
            public Style GetStyleByUser(Guid userGuid) 
            {
                
    return obj.GetStyleByUser(userGuid);
            }


        }

    数据访问层(DAL)中代码:

    代码
    public class CustomStyleRep
        {
            EschoolBLDataContext db 
    = new EschoolBLDataContext();
            
            
    /// <summary>
            
    /// 获取指定类别的风格模版
            
    /// </summary>
            
    /// <param name="typeID"></param>
            
    /// <returns></returns>
            public IQueryable<Style> GetStylesByType(int typeID)
            {
                IQueryable
    <Style> query = db.Style.Where(u => u.TypeID == typeID);
                
    return query;
            }

            
    /// <summary>
            
    /// 设置风格模版
            
    /// </summary>
            
    /// <param name="userGuid"></param>
            
    /// <param name="styleID"></param>
            
    /// <returns></returns>
            public int SetupStyle(Guid userGuid,int styleID)
            {
                var userStyle 
    = db.UserStyle.SingleOrDefault(u => u.UserGuid == userGuid);
                
    if (userStyle != null)
                {
                    
    //更新风格模版
                    userStyle.Style = db.Style.SingleOrDefault(u => u.StyleID == styleID);
                }
                
    else 
                {
                    
    //添加风格模版
                    userStyle = new UserStyle
                    {
                        UserGuid 
    = userGuid,
                        StyleID 
    = styleID,
                        ModifyTime 
    = DateTime.Now
                    };
                    db.UserStyle.InsertOnSubmit(userStyle);
                }
                
    int count = db.GetChangeSet().Inserts.Count + db.GetChangeSet().Updates.Count;
                db.SubmitChanges();

                
    return count;
            }

            
    /// <summary>
            
    /// 获取用户的风格模版
            
    /// </summary>
            
    /// <param name="userGuid"></param>
            
    /// <returns></returns>
            public Style GetStyleByUser(Guid userGuid)
            {
                var userStyle 
    = db.UserStyle.SingleOrDefault(u => u.UserGuid == userGuid);
                
    if(userStyle!=null)
                {
                    
    return userStyle.Style;
                }
    else
                {
                    
    return null;
                }

            }
            
        }
  • 相关阅读:
    软件工程课程总结
    《构建之法》部分读书笔记
    软件工程课程作业
    本周软件工程课程感想
    软件工程课设迭代开发第八天
    软件工程课设迭代开发第五至七天
    软件工程课设迭代开发第四天
    软件工程课设迭代开发第三天
    软件工程课设迭代开发第二天
    Bresenham中点画圆法与二阶差分算法
  • 原文地址:https://www.cnblogs.com/jcomet/p/1700121.html
Copyright © 2011-2022 走看看