查询发布的公告信息

如果要修改公告的信息,先在HTML页面的自定义操作列里面的button获取它的ID 点击事件

btns += '<button type="button" class="layui-btn layui-btn-xs" onclick=updateNotice(' + noticeId + ')>修改</button>';

还需要设置隐藏域的Id,方便后面获取,这个隐藏域是位于另一个视图里面的,与点击事件与跳转页面不是同一个视图,而这个视图将在控制器修改公告信息的UpdateNotice方法里添加视图(这个方法名称根据自身情况而定)。

@ ViewBag.noticeId放到value是为了接收到控制器那边的数据,如果要获取这个Id就可以通过input里面的主键来获取它的值。

 <input type="hidden" id="noticeId" name="NoticeID" value="@ViewBag.noticeId" />

 下面图中是跳转到修改的控制器页面,updateNotice 就是btn里面是点击事件而noticeId不用说,肯定也是btn 获取到的Id。然后href里面就是修改公告控制器代码的路径。

  function updateNotice(noticeId) {
            window.location.href = "/SystemManagement/IssuanceNotice/UpdateNotice?noticeId=" + noticeId;//修改公告页面
        }

进入修改控制器,修改公告的信息,先创建一个修改信息的方法UpdateNotice,然后获取id noticeId,它是一个int类型,int后面加上一个?表示可为空的意思。在这里添加视图,用if else ,重定向到登录页面,Redirect方法里面放登录页面的路径。noticeId 放到添加修改页面的视图层的隐藏域的value值里面。

    public ActionResult UpdateNotice(int? noticeId)
        {
            if (Session["UserID"] != null)
            {
                //清空session
                Session.Remove("sessionFiles");
                ViewBag.noticeId = noticeId;
                return View();
            }
            else
            {
                //重定向到登录       
                return Redirect("/Main/Login");
            }
        }

声明一个全局变量noticeId ,根据隐藏域里面的id值获取里面的内容。获取id后就要获取公告信息,post请求获取URL、形参、实参,还有回调函数回填数据

回到控制器创建一个方法,联表查询数据库是数据,公告类型ID(用于回填下拉框信息,不需要公告类型名称),公告类型明细ID,浏览次数,是否置顶,new显示天数。

接下来查询对应的轮播图信息,根据公告ID来查询轮播图中的信息。

接下判断不等于空。在这里需要创建一个NoticeVo的类,我们把返回的公告信息以及公告类型信息、对应的轮播图信息都返回到NoticeVo里面。

public class NoticeVo:Models.PW_NoticeTable
    {
        /// <summary>
        /// 公告类型ID
        /// </summary>
        public int NoticeTypeID { get; set; }
        /// <summary>
        /// 编辑者
        /// </summary>
        public string Editor { get; set; }
        /// <summary>
        /// 公告类别名称	
        /// </summary>
        public string NoticeTypeName { get; set; }
        /// <summary>
        /// 公告类别明细名称
        /// </summary>
        public string NoticeTypeDetailName { get; set; }
        /// <summary>
        /// 发布时间 字符串
        /// </summary>
        public string ReleaseTimeStr { get; set; }
        /// <summary>
        /// 是否是轮播
        /// </summary>
        public bool noticeCarousel { get; set; }
        /// <summary>
        /// 轮播图片地址
        /// </summary>
        public string NoticeCarouselImage { get; set; }
        /// <summary>
        /// 是否是新公告标志
        /// </summary>
        public bool IsNew { get; set; }


        //是否置顶
        public string OverheadStr { get; set; }
    }

接下来根据公告id查询出公告的信息、查询轮播图信息、加载公告内容、读取附件信息。把这些信息都写在try catch里面,最后再用return返回。

根据公告id查询出公告的信息就不放上来了。

下面是查询轮播图信息。

List<PW_NoticeCarousel> pwNoticeCarousels = (from tbNoticeCarousel in myModel.PW_NoticeCarousel
                                                             where tbNoticeCarousel.NoticeID == NoticeID
                                                             select tbNoticeCarousel).ToList();
                if (pwNoticeCarousels.Count > 0)
                {
                    notice.noticeCarousel = true;//轮播为true
                    notice.NoticeCarouselImage = pwNoticeCarousels[0].NoticeCarousel;//公告轮播的图片地址
                }

加载公告内容,需要判断文件是否存在。

  string textFileName = Server.MapPath("~/Document/Notice/Text/") + notice.NoticeContent;
                if (System.IO.File.Exists(textFileName))
                {
                    //文件存在
                    notice.NoticeContent = System.IO.File.ReadAllText(textFileName);
                }
                else
                {
                    //文件不存在
                    notice.NoticeContent = "<p>没有找到公告内容,可能文件已经丢失;请重新编辑发布</p>";
                }

读取附件信息。也需要联表查询附件信息(这里不写出来啦),再通过for 循环遍历附件到filesvo里面,在for循环里面创建对象。然后通过正则表达式获取文件名称,匹配文件名。然后下面写两个session,将附件信息保存到session,一个用来数据库提取数据,另一个用来记录原来的附件。

for (int i = 0; i < sessionFiles.Count; i++)
                {
                    //通过正则表达式获取文件名称
                    string strFileName = Regex.Match(sessionFiles[i].Files, "(?<=fileName=).+?(?=\")").Value;
                    sessionFiles[i].FileName = strFileName;
                    sessionFiles[i].FileGuid = Guid.NewGuid().ToString("N");
                }
                List<FilesVo> oldSessionFiles = new List<FilesVo>();
                foreach (FilesVo file in sessionFiles)
                {
                    oldSessionFiles.Add(file);
                }  
                //数据库提取数据 1 3 4
                Session["sessionFiles"] = sessionFiles;
                //记录原来的附件 1 2 
                Session["oldSessionFiles"] = oldSessionFiles;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值