公告的发布

做一个网站,公告的发布也是比较常见的,想要在这个网站里面发布一下想要发的公告,就得要这个发布公告的这一个模块,这个跟新闻、广告这一类应该是差不多的,就是发一些自己觉得好的文章,又或者发布一下比如在一个学校或者公司,发布一些需要全校或者整个厂区都需要知道的一些公告。
当然,要发布公告还得查询一下公告,由于公告内容会涉及很多张不同的表,内容不少,所以得分一下页。
而要用到分页就得创建两个实体类,类的名称分别是LayuiTableData跟LayuiTablePage,而这个是layui table组件分页请求数据封装;page代表单前页码,limit代表每页数据的量

LayuiTablePage:
/// <summary>
        /// page 代表当前页码
        /// </summary>
        public int page { get; set; }
        /// <summary>
        /// limit 代表每页数据量
        /// </summary>
 public int limit { get; set; }

还有分页开始序号和结束序号

/// <summary>
        /// 分页开始序号
        /// </summary>
        /// <returns></returns>
        public int GetStartIndex()
        {
//(当前的页数-1)*当前页的总条数
            return (page - 1) * limit;
        }
        /// <summary>
        /// 分页结束序号
        /// </summary>
        /// <returns></returns>
        public int GetEndIndex()
        {
//(当前页数*当前总条数)-1 
            return page * limit - 1;
 }
LayuiTableData:
}

在LayuiTableData后面还要传一个参数,这个参数可以接受任何数据过来LayuiTableData这个

/// <summary>
        /// 数据状态码 -- 可以不设置
        /// </summary>
        public int code { get; set; }
        /// <summary>
        /// 状态信息 -- 可以不设置
        /// </summary>
        public string msg { get; set; }
        /// <summary>
        /// 总行数 -- 必须
        /// </summary>
        public int count { get; set; }
        /// <summary>
        /// 数据 -- 必须
        /// </summary>
 public List<T> data { get; set; }

设置完这些之后就可以开启分页了。

  1. 然后查询完了就要新增,在新增之前要写一句代码,[ValidateInput(false)]:由于要存入HTML,关闭验证,因为公告的上传跟大一部分是中文文字,这个文字生成的是HTML的代码才呈现给用户看的,而HTML的代码在MVC C#中它不认这些代码,认为HTML代码是对它在进行攻击,所以得加上这一句代码。
  2. 接着就跟上传文件的思路差不多,这里如果想加入一些图片的轮播让整体的页面好看一点的话也可以加上,但是加上了这个就得检查存放轮播的图片的目录是否存在,不存在就要创建;
  3. 接着检查存放的附件的目录是否存在,不存在也创建;
  4. 再者检查存放正文的图片的目录是否存在,不存在当然就创建;
  5. 然后就正则匹配一下图片文件的名称,然后移动文件
    //正则表达式 匹配出图片文件名称–移动文件
    MatchCollection oldMatchs = Regex.Matches(textCount, “(?<=/Document/Temp/).+?(?=”.+?/>)");
  6. 移动文件,这里有一个注意的,移动文件之后在原来临时装文件的那个文件夹里就不能有文件留下来,跟剪切粘贴一样的,不是复制粘贴
    //Move:剪切,粘贴。copy:复制粘贴
System.IO.File.Move(oldImgPath, newPath);
  1. 替换所有图片文件的路径,把临时路径替换成要保存的路径,用一个Replace方法把它替换掉
  2. 保存公告信息,最重要的一点还是提交事务。然后否则就成功、失败、请填写完成等等这些用户操作的时候发生错误的提示。
    注:最主要的一点就是你既然用来事务,那就一定要提交事务!
    回到页面的话肯定得引用一下layui这个插件,然后就要声明全局的一个变量:
//保存layui模块以便全局使用 
var layer, layuiTable;
 然后写一个加载事件,在这个加载事件里面写一下layui的初始化和加载事件:
//加载和初始化layui模块
layui.use(['layer', 'table'], function () {
layer = layui.layer;
layuiTable = layui.table;
}

用use事件,然后中括号里面是加载的模块,两个的位置可以调换,但是那个layer是一定得写上的,另一个的话就是你想要layui插件里的哪一个模块就写上那个模块的名称,它就会帮你加载你要的那个模块的一些你想要实现的功能。
在浏览器上想要呈现出开启分页然后还有个选择开启分页每页的条数的话,还得在页面上写一下它的代码,不过默认值是显示10条数据

page: {
limit: 10, //指定每页显示的条数(默认值)
limits: [5, 10, 15, 20, 25, 30, 35, 40, 45, 50] , //每页条数的选择项
       },

点击那个标志出来的按钮就可以开启你想要的每页要多少条数据了,但是这些你得根据你在页面写的每条数的选择项有关,limits那里有的你就可以选择到,没有的就没有选择。
公告的发布
写完了公告的发布这一个模块当然不能够将上面的那张图片里显示出来的一样,这还得好几个页面一起搭建成的,公告的发布就只是左边那里的那张图片那里才是公告的发布的内容,但是点击图片的时候有一个跳转,跳转到那个发布公告页面,那个才是公告的发布,这是在写页面的时候把它也显示在这里。
当你点击了图片之后,页面跳转:
公告的发布
这个才是发布公告的页面,在填写发布公告的那里填写什么内容,发布公告页面就会显示声明内容,也可以选择是否上传片、附件等这些内容。
这一系列的操作,代码量是很多的,而且还要做一系列的判断,脑海的逻辑思维肯定得过关才可以,听授课老师讲,不懂,下课后看视频,懂一点点。这些代码跟思路都是老师讲的。然后不懂之后还要慢慢多看几次视频。学了这个才知道,看起来挺简单的点击,上传…一学,原来不简单,不过什么都是懂了就很简单,不懂就很难。