基於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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM