用来实现网站标题、名称、关键字、描述、版权等信息的设置。

模型字段:

网站的设置信息前后台都要用到,所以要把模型方式Ninesky/Models文件夹中,代码如下:

////////////////////
//网站设置模型
//创建日期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(,MinimumLength=, ErrorMessage="必须是4-50个字符!")]
[Display(Name="网站名称",Description="必填,4-50个字符。")]
public string Name { get; set; }
/// <summary>
/// 网站标题
/// </summary>
[Required(ErrorMessage = "必须输入网站标题!")]
[StringLength(, MinimumLength = , ErrorMessage = "必须是4-50个字符!")]
[Display(Name = "网站标题", Description = "必填,4-50个字符。")]
public string Title { get; set; }
/// <summary>
/// 网站地址
/// </summary>
[Required(ErrorMessage = "必须输入网站地址!")]
[StringLength(, MinimumLength = , ErrorMessage = "必须是4-50个字符!")]
[Display(Name = "网站地址", Description = "必填,4-50个字符。")]
public string Url { get; set; }
/// <summary>
/// Logo地址
/// </summary>
[StringLength(, ErrorMessage = "必须少于255个字符!")]
[Display(Name = "Logo地址", Description = "小于255个字符。")]
public string LogoUrl { get; set; }
/// <summary>
/// Meta描述语
/// </summary>
[Required(ErrorMessage = "必须输入Meta描述语!")]
[StringLength(, ErrorMessage = "描述语之间用“,”隔开,必须少于500个字符!")]
[Display(Name = "Meta描述语", Description = "小于500个字符。")]
[DataType(DataType.MultilineText)]
public string MetaDescription { get; set; }
/// <summary>
/// Meta关键字
/// </summary>
[Required(ErrorMessage = "必须输入Meta关键字!")]
[StringLength(, ErrorMessage = "关键字之间用“,”隔开,必须少于500个字符!")]
[Display(Name = "Meta关键字", Description = "小于500个字符。")]
[DataType(DataType.MultilineText)]
public string MetaKeywords { get; set; }
/// <summary>
/// 版权信息
/// </summary>
[Required(ErrorMessage = "必须输入版权!")]
[StringLength(, ErrorMessage = "必须少于500个字符!")]
[Display(Name = "版权信息", Description = "支持Html,小于500个字符。")]
[DataType(DataType.MultilineText)]
public string Copyright { get; set; }
}
}

同样在Ninesky/Repository文件夹中添加接口InterfaceSiteConfig

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() == ) nineskyContext.SiteConfig.Add(siteConfig);
else
{
nineskyContext.SiteConfig.Attach(siteConfig);
nineskyContext.Entry<SiteConfig>(siteConfig).State = System.Data.EntityState.Modified;
}
return nineskyContext.SaveChanges() > ;
}
}
}
}

后台部分:

在~/Areas/Admin/Controllers中添加SystemController.cs

添加局部视图action public PartialViewResult Config() 及保存处理的action public JsonResult Config(SiteConfig siteConfig)

/// <summary>
/// 基本信息设置
/// </summary>
/// <returns></returns>
public PartialViewResult Config()
{
var _siteConfig = new SiteConfigRepository().Find();
if (_siteConfig == null) _siteConfig = new SiteConfig() { Id = , 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 > );
foreach (var i in _eItem)
{
_jdata.MessageLsit.Add(i.Key, "验证失败!");
}
_jdata.Message = ("保存数据时发生错误"); }
return Json(_jdata);
}

为action 添加视图

@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文件

//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。

在顶部获取网站信息

随后在布局页调用相应字段

进首页看一下,已经显示出来了。

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

代码见http://pan.baidu.com/s/1rG1vH

MVC4做网站六后台管理:6.2网站信息设置的更多相关文章

  1. 学用MVC4做网站六:后台管理(续)

    关于后台的说明: 后台将会用easyui + ajax模式. 这里涉及两个问题,一个是使用easyui如何在前台验证模型的问题,另一个是ajax提交后返回数据. 一.Easyui验证 前台验证采用ea ...

  2. MVC4做网站六后台管理:6.1.4管理员列表、添加及删除

    一.管理员列表 1.首先[AdministratorController]中添加返回分部视图的public PartialViewResult Index() /// <summary> ...

  3. 学用MVC4做网站六后台管理:6.1.3管理员修改密码

    6.1.3修改密码 需要两个action.一个是点击修改密码的链接要显示修改密码的分部视图(对话框形式):另一个是提交的处理action. 1.打开[AdministratorController]添 ...

  4. 学用MVC4做网站六后台管理:6.1.1管理员登录、6.1.2退出

    1.管理员登录 在6.1中已添加控制器[AdministratorController] 在控制器中添加[Login()]action,用来显示登录页面 /// <summary> /// ...

  5. 学用MVC4做网站六后台管理:6.1管理员(续)

    接6.1 首先在~/Areas/Admin/Models文件夹添加管理员模型Administrator.cs using System.ComponentModel.DataAnnotations; ...

  6. django带后台管理功能的网站

    一.原起: 我大学是学的.Net平台.在那个平台上开发网站用的是ASP.NET这门技术:在那里对数据库的处理.为了 方便写代码,通常也是会用ORM(对象关系模型映射):毕业后搞起了MySQL数据库.自 ...

  7. 如何修改ECSHOP后台管理中心的Title信息

    下图中红色圈定的部分就是本次修改要改的地方 修改方法其实很简单的:打开语言包文件  /languages/zh_cn/admin/common.php 将 $_LANG['app_name'] = ' ...

  8. MVC4做网站后台:模块管理1、修改模块信息

    网站可能会包含一些模块:像文章.产品.图片.留言等. 栏目模块主要实现功能,启用或禁用模块,模块权限设置,模块上传设置等. 权限设置和上传设置以后专门考虑,先来显示或禁用模块. 1.在顶部导航栏添加管 ...

  9. MVC4做网站后台:用户管理 —用户

    这块进行用户管理,可以浏览.查询已注册的用户,修改用户资料,删除用户等.没有做添加用户,不知是否必要.列表页还是使用easyui的datagrid.这个思路跟用户组的方式差不多. 1.接口Interf ...

随机推荐

  1. linu for循环

    用途说明 在shell中用于循环.类似于其他编程语言中的for,但又有些不同.for循环是Bash中最常用的语法结构. 常用格式 格式一 for 变量 do 语句 done 格式二 for 变量 in ...

  2. python使用pdkdf2加盐密码

    from werkzeug.security import generate_password_hash, check_password_hash pw = generate_password_has ...

  3. javascript 创建对象的7种模式

    使用字面量方式创建一个 student 对象: var student = function (){ name : "redjoy", age : 21, sex: women, ...

  4. 最小生成树 prime poj1258

    题意:给你一个矩阵M[i][j]表示i到j的距离 求最小生成树 思路:裸最小生成树 prime就可以了 最小生成树专题 AC代码: #include "iostream" #inc ...

  5. pythonchallenge 解谜 Level 1

    得到第一关地址后可以进行第一关的解析了. 看起来好神秘的样子.但是也就是把字母 k 变成 m , o 变成 q ,e 变成 g.将字母对应的ASCII的值+2就行了. #-*- coding:utf- ...

  6. java反射机制,通过类名获取对象,通过方法名和参数调

    import java.lang.reflect.Method;   import javax.persistence.Table; /**  * 通过注解javax.persistence.Tabl ...

  7. vector删除元素浅析

    <<effectSTL>>书中提到erase-remove方法  即c.rease(remove(c.begin(),c.end(),1963),c.end()) 关于remo ...

  8. C++大会感悟

    写在前面: 我是一名学生,在北邮读研,也是跨专业学的计算机,个人对服务器端编程感兴趣,平时主用c/c++,所以逮到这次机会就参加了这次大会. 先附几张合影: 正文: 这次参加c++大会也算是我最认真的 ...

  9. 封装自己的DB类(PHP)

    封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现.这样有了自己的DB类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便! 1.封装一个DB类.一个类文件 ...

  10. 通过修改i8042prt端口驱动中类驱动Kbdclass的回调函数地址,达到过滤键盘操作的例子

    同样也是寒江独钓的例子,但只给了思路,现贴出实现代码 原理是通过改变端口驱动中本该调用类驱动回调函数的地方下手 //替换分发函数 来实现过滤 #include <wdm.h> #inclu ...