用來實現網站標題、名稱、關鍵字、描述、版權等信息的設置。javascript
模型字段:html
網站的設置信息先後臺都要用到,因此要把模型方式Ninesky/Models文件夾中,代碼以下:java
//////////////////// //網站設置模型 //建立日期2013-8-1 //修改日期2013-8-4 /////////////////// using System.ComponentModel.DataAnnotations; namespace Ninesky.Models { /// <summary> /// 網站信息設置 /// </summary> public class SiteConfig { [Key] public int Id { get; set; } /// <summary> /// 網站名稱 /// </summary> [Required(ErrorMessage="必須輸入網站名稱!")] [StringLength(50,MinimumLength=4, ErrorMessage="必須是4-50個字符!")] [Display(Name="網站名稱",Description="必填,4-50個字符。")] public string Name { get; set; } /// <summary> /// 網站標題 /// </summary> [Required(ErrorMessage = "必須輸入網站標題!")] [StringLength(50, MinimumLength = 4, ErrorMessage = "必須是4-50個字符!")] [Display(Name = "網站標題", Description = "必填,4-50個字符。")] public string Title { get; set; } /// <summary> /// 網站地址 /// </summary> [Required(ErrorMessage = "必須輸入網站地址!")] [StringLength(50, MinimumLength = 4, ErrorMessage = "必須是4-50個字符!")] [Display(Name = "網站地址", Description = "必填,4-50個字符。")] public string Url { get; set; } /// <summary> /// Logo地址 /// </summary> [StringLength(255, ErrorMessage = "必須少於255個字符!")] [Display(Name = "Logo地址", Description = "小於255個字符。")] public string LogoUrl { get; set; } /// <summary> /// Meta描述語 /// </summary> [Required(ErrorMessage = "必須輸入Meta描述語!")] [StringLength(500, ErrorMessage = "描述語之間用「,」隔開,必須少於500個字符!")] [Display(Name = "Meta描述語", Description = "小於500個字符。")] [DataType(DataType.MultilineText)] public string MetaDescription { get; set; } /// <summary> /// Meta關鍵字 /// </summary> [Required(ErrorMessage = "必須輸入Meta關鍵字!")] [StringLength(500, ErrorMessage = "關鍵字之間用「,」隔開,必須少於500個字符!")] [Display(Name = "Meta關鍵字", Description = "小於500個字符。")] [DataType(DataType.MultilineText)] public string MetaKeywords { get; set; } /// <summary> /// 版權信息 /// </summary> [Required(ErrorMessage = "必須輸入版權!")] [StringLength(500, ErrorMessage = "必須少於500個字符!")] [Display(Name = "版權信息", Description = "支持Html,小於500個字符。")] [DataType(DataType.MultilineText)] public string Copyright { get; set; } } }
一樣在Ninesky/Repository文件夾中添加接口InterfaceSiteConfigapp
using Ninesky.Models; namespace Ninesky.Repository { /// <summary> /// 網站設置信息接口 /// <remarks> /// 版本v1.0 /// 建立2013.8.4 /// </remarks> /// </summary> public interface InterfaceSiteConfig { /// <summary> /// 查找設置 /// </summary> /// <returns></returns> SiteConfig Find(); /// <summary> /// 保存設置 /// </summary> /// <param name="siteConfig">設置</param> /// <returns></returns> bool Save(SiteConfig siteConfig); } }
再添加SiteConfigRepository.cs佈局
using Ninesky.Models; using System.Linq; namespace Ninesky.Repository { /// <summary> /// <remarks> /// 版本v1.0 /// 建立2013.8.4 /// </remarks> /// </summary> public class SiteConfigRepository:InterfaceSiteConfig { private NineskyContext nineskyContext; /// <summary> /// 查找設置 /// </summary> /// <returns></returns> public SiteConfig Find() { using (nineskyContext = new NineskyContext()) { return nineskyContext.SiteConfig.SingleOrDefault(); } } /// <summary> /// 保存設置 /// </summary> /// <param name="siteConfig">設置</param> /// <returns></returns> public bool Save(SiteConfig siteConfig) { using (nineskyContext = new NineskyContext()) { if (nineskyContext.SiteConfig.Count() == 0) nineskyContext.SiteConfig.Add(siteConfig); else { nineskyContext.SiteConfig.Attach(siteConfig); nineskyContext.Entry<SiteConfig>(siteConfig).State = System.Data.EntityState.Modified; } return nineskyContext.SaveChanges() > 0; } } } }
後臺部分:網站
在~/Areas/Admin/Controllers中添加SystemController.csui
添加局部視圖action public PartialViewResult Config() 及保存處理的action public JsonResult Config(SiteConfig siteConfig)spa
/// <summary> /// 基本信息設置 /// </summary> /// <returns></returns> public PartialViewResult Config() { var _siteConfig = new SiteConfigRepository().Find(); if (_siteConfig == null) _siteConfig = new SiteConfig() { Id = 0, Name = "NineSky", Title = "歡迎光臨NineSky!" }; return PartialView(_siteConfig); } /// <summary> /// Config保存 /// </summary> /// <param name="siteConfig"></param> /// <returns></returns> [HttpPost] public JsonResult Config(SiteConfig siteConfig) { JsonData _jdata = new JsonData(); if (ModelState.IsValid) { var _scRsy = new SiteConfigRepository(); if (_scRsy.Save(siteConfig)) { _jdata.Success = true; _jdata.Message = ("保存成功√"); } else { _jdata.Success = false; _jdata.Message = ("保存數據時發生錯誤"); } } else { _jdata.Success = false; var _eItem = ModelState.Where(m => m.Value.Errors.Count > 0); foreach (var i in _eItem) { _jdata.MessageLsit.Add(i.Key, "驗證失敗!"); } _jdata.Message = ("保存數據時發生錯誤"); } return Json(_jdata); }
爲action 添加視圖3d
@model Ninesky.Models.SiteConfig <div class="c_navbar">網站設置 >> 基本信息</div> @using (Html.BeginForm("Config", "System", FormMethod.Post, new { id = "siteconfig_form" })) { @Html.AntiForgeryToken() <div class="fs_wapper"> <div class="header">網站設置 @Html.HiddenFor(model => model.Id)</div> @Html.ValidationSummary() <table> <tr> <th>@Html.LabelFor(model => model.Name)</th> <td>@Html.EasyuiInput(model=>model.Name,new{@class="easyui-validatebox"}) @Html.DisplayDescriptionFor(model => model.Name)</td> </tr> <tr> <th>@Html.LabelFor(model => model.Title)</th> <td>@Html.EasyuiInput(model=>model.Title,new{@class="easyui-validatebox"}) @Html.DisplayDescriptionFor(model => model.Title)</td> </tr> <tr> <th>@Html.LabelFor(model => model.Url)</th> <td>@Html.EasyuiInput(model => model.Url, new { @class = "easyui-validatebox" }) @Html.DisplayDescriptionFor(model => model.Url)</td> </tr> <tr> <th>@Html.LabelFor(model => model.LogoUrl)</th> <td>@Html.EasyuiInput(model => model.LogoUrl, new { @class = "easyui-validatebox" }) @Html.DisplayDescriptionFor(model => model.LogoUrl)</td> </tr> <tr> <th>@Html.LabelFor(model => model.MetaDescription)</th> <td> @Html.EasyuiInput(model => model.MetaDescription, new { @class = "easyui-validatebox" }, "textarea") @Html.DisplayDescriptionFor(model => model.MetaDescription)</td> </tr> <tr> <th>@Html.LabelFor(model => model.MetaKeywords)</th> <td>@Html.EasyuiInput(model => model.MetaKeywords, new { @class = "easyui-validatebox" }, "textarea") @Html.DisplayDescriptionFor(model => model.MetaKeywords)</td> </tr> <tr> <th>@Html.LabelFor(model => model.Copyright)</th> <td>@Html.EasyuiInput(model => model.Copyright, new { @class = "easyui-validatebox" }, "textarea") @Html.DisplayDescriptionFor(model => model.Copyright)</td> </tr> <tr> <th></th> <td><a id="save" href="javascript:void()" class="easyui-linkbutton">保存</a></td> </tr> </table> </div> } <script type="text/javascript"> $(document).ready(function () { $("#save").click(function () { ConfigSubmit(); }); }); </script>
在\Areas\Admin\Scripts文件件中添加System.js文件code
//Config頁提交 function ConfigSubmit() { $('#siteconfig_form').form('submit', { success: function (data) { var rt = jQuery.parseJSON(data); if (rt.Success) { $.messager.alert("保存成功", rt.Message); } else { var msg = ""; if (rt.MessageLsit != undefined) { $.each(rt.MessageLsit, function (i, val) { msg += "<li>" + i + ":" + val + "</li>"; }); } if (msg != "") msg = rt.Message + "<br /> <p> 緣由以下:" + "<ul>" + msg + "</ul></p>"; else msg = rt.Message; $.messager.alert("保存失敗", msg, "error"); } } }); }
完工
前臺的調用:
打開前臺佈局頁_Layout.cshtml。
在頂部獲取網站信息
隨後在佈局頁調用相應字段
進首頁看一下,已經顯示出來了。
==========================