好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

基于mvc3的razor多用户店铺模板切换设计思路

基于mvc3的razor多用户店铺模板切换设计思路

mvc3的实际应用时间还是不长,有些东西正在摸索当中,项目是多用户多模版店铺,以下为实际开发过程中的解决办法,感觉解决方案不是最好的,但是目前只能想到这些,希望园里的大牛们给点建议。

1.项目解决方案的目录结构。

Syw.Core主要放实体类及依赖注入的程序及插件和数据访问接口。

Syw.Data.SqlServer完全是一大堆sql,实现Syw.Core里的IData类。对orm我没深入使用过,还是觉得最大程度的控制我的sql比较放心,所有的集合都是List或者Ilist类型的。

Syw.Services业务处理层,类似以前的bll,这里用的是静态方法,没有走接口了,项目不是特别大,一个人开发,接口太多会很累。

Syw.Test单元测试用的,有时候调试返回结果还是很有用的。

Syw.Admin,后台管理,但是这个我参考的nopcommerce,生成的时候直接在网站更目录下生成Administrator文件夹,View和Content文件夹都在这里,但是dll文件是生成到Syw.Web这个主目录下的,这样我就不需要用二级域名来访问后台了,直接通过http://xxxx.com/admin就可以了。

Syw.Framework主要是一些基础帮助类。例如图片处理,邮件发送帮助类,字符串处理,自定义ui等等。

2.模板路径及结构

a1,a2,b1为不同风格的模板,不仅仅颜色不相同,排版方式也不相同。现在只有三个模板,通过这种方式选择模板。a1,a2为店铺类的,a3为服务类企业用的。

_LayoutStore.cshtml是店铺的主模板页。通过@Hmtl.Action来访问ChildAction加载页面,@RenderBody() 加载主页面。

 <!  DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"  > 
 <  html   xmlns  ="http://www.w3.org/1999/xhtml"  > 
 <  head  > 
 <  meta   http-equiv  ="X-UA-Compatible"   content  ="IE=EmulateIE7"   /> 
 <  title  > @ViewBag.Title -ooxx网 </  title  > 
 <  meta   name  ="keywords"   content  ="@ViewBag.Title"  > 
 <  meta   name  ="description"   content  ="@ViewBag.Title"  > 
 <  script   type  ="text/javascript"   src  ="/Scripts/jquery-1.4.4.min.js"  ></  script  > 
 <  link   href  ="/StoreThemes/a2/Content/style2.css"   type  ="text/css"   rel  ="stylesheet"   /> 
 </  head  > 

 <  body  > 
 <!--  banner以上的头部  -->  
 @Html.Action("Header", "Store", new { store = ViewBag.Model.Store })
   <!--  banner以上的头部 结束  --> 


      <!--  顶部banner和导航  --><!--  考虑传参数model  -->  
        @Html.Action("TopBanner", "Store", new { store = ViewBag.Model.Store, act = Url.RequestContext.RouteData.Values["action"].ToString().ToLower() })
          <!--  顶部banner和导航结束  --> 
   <  div   class  ="con"  >  

    @Html.Action("SideBar", "Store", new { store = ViewBag.Model.Store })
      <  div   class  ="con-right"  > 
         <!--   include   -->  
        @RenderBody()
          <!--   include end   --> 
     </  div  > 
   </  div  > 
  
 <!--   页脚   -->  
@Html.Action("Footer","Store",new { store = ViewBag.Model.Store })
  <!--   页脚 结束   --> 
 </  body  > 
 </  html  > 

StoreController里的关于我们的Action

         #region  关于我们
         ///   <summary> 
         ///   店铺简介
          ///   </summary> 
         ///   <returns></returns> 
         public  ActionResult About( int   id)
        {
              var  model =  new   StoreModel();
            model.Store  =  StoreService.GetStoreById(id);
            model.CurrentAction  = RouteData.Values[ "  action  "  ].ToString().ToLower().ToLower();
            ViewBag.Model  =  model;
              return  View(model.Store.Theme.ViewPath +  "  About.cshtml  "  , model);
        }
          #endregion 

ChildAction如下,网站底部

         [ChildActionOnly]
          public   ActionResult Footer(StoreInfo store)
        {
              var  model = new   StoreModel();
            model.Store  =  store;
              if  (store.Theme !=  null  )
            {
                  return  PartialView(store.Theme.ViewPath +  "  Footer.cshtml  "  , model);
            }
              else  
            {
                  return  PartialView(StoreService.GetStoreConfig().DefaultView +  "  Footer.cshtml  "  , model);
            }
        } 

后台选择模板

通过这种简单的方式实现了多用户店铺多模板的选择功能,自定义二级域名不在这里赘述了。

自我感觉还有很多不完善的地方,欢迎拍砖。

独立博客地址: http://www.jqpress.com/post/182.aspx

 

 

标签:  mvc3 ,  razor ,  多用户多模版商城

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于基于mvc3的razor多用户店铺模板切换设计思路的详细内容...

  阅读:60次