MVC4作網站六後臺管理:6.2網站信息設置

用來實現網站標題、名稱、關鍵字、描述、版權等信息的設置。javascript

模型字段:html

image

網站的設置信息先後臺都要用到,因此要把模型方式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");
            }
        }
    });
}

完工

image

前臺的調用:

打開前臺佈局頁_Layout.cshtml。

在頂部獲取網站信息

image

隨後在佈局頁調用相應字段

image

進首頁看一下,已經顯示出來了。

image

==========================

代碼見http://pan.baidu.com/s/1rG1vH

相關文章
相關標籤/搜索