使用ASP.NET MVC3+EF+Jquery制作文字直播系统(四)——完成篇

在上一篇中本来打算结束的,最后遇到点小问题,不得不分开,废话少说,开始吧。

这一篇中,我们完成最后的工作,在页面中显示数据。我返回的是JSON数据,所以首先写一个JsonHelper类。

在LiveText.WebUI项目里新建一个Tool文件夹,在这个文件夹里新建一个JsonHelper类。代码如下:

public static class JsonHelper
{
    /// <summary>
    /// Json序列化
    /// </summary>
    /// <param name="value"></param>
    /// <returns></returns>
    public static string JsonSerializer(this object value)
    {
        JavaScriptSerializer s = new JavaScriptSerializer();
        return s.Serialize(value);
    }
}

然后我们在新建一个一般处理程序,就命名为GetInfoList.ashx吧。在前台页面,我们对它发起AJAX请求,返回JSON数据。

public class GetInfoList : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";

        LiveTextDbContext dbContext = new LiveTextDbContext();

        var list = from t in dbContext.Texts.Where(t => t.Title.Name == "校庆文字直播")
                   select new
                   {
                       t.Prolocutor,
                       t.ProContent,
                       t.ProDate
                   };

        string data = list.JsonSerializer();

        context.Response.ContentType = "application/json";
        context.Response.Write(data);
        context.Response.Flush();
        context.Response.End();
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

我在上面的代码中为了方便将程序写死了,只取得标题为“校庆文字直播”的文字。当然,你得在后台新建一个“校庆文字直播”的标题,将它放在一个类别里面。我已经将数据都放在数据库里面了,一会就可以看到程序运行的效果了。

下面我们就完成前台的东西吧。我们需要修改的就是Views➤Home下面的Index.cshtml。

在Body里面加上下面代码即可:

    <div id="container">
        <div id="live">
            <ul>
            </ul>
        </div>
    </div>

然后加点CSS眨眼

 

    <style type="text/css">
        div#container
        {
            width: 770px;
            margin-left: auto;
            margin-right: auto;
        }
        div#live
        {
            width: 100%;
        }
        div#live ul
        {
            list-style: none;
        }
        div#live ul li
        {
            padding-bottom: 19px;
        }
        div#live ul li p
        {
            margin-top: 0;
            margin-bottom: 0;
        }
        div#live .evenlibackcolor
        {
            background-color: #F5F5F5;
        }
        div#live .oddlibackcolor
        {
            background-color: #FFF;
        }
        div#live .namespan
        {
            color: #E211A5;
        }
        div#live .timespan
        {
            font-size: small;
            color: #AAA;
            margin-left: 10px;
        }
    </style>

在引入两个JS文件,DateFormate.js的下载地址:https://files.cnblogs.com/nianming/DateFormat.js

    <script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/DateFormat.js")" type="text/javascript"></script>

在写一下JS代码就搞定了:

    <script type="text/javascript">
        $(function () {
            init();
            setInterval("dyoper()", 10000);
        });

        //初始
        function init() {
            var noCache = new Date();
            $.ajax({
                type: 'post',
                url: '/Models/GetInfoList.ashx?m=' + Date(),
                data: {},
                success: function (data) {
                    if (data != null) {
                        jQuery.each(data, function (entryIndex, entry) {
                            var mydate = ConvertJSONDateToJSDateObject(entry['ProDate']);
                            var html = '';
                            if (entryIndex % 2 == 0) {
                                html = '<li class="evenlibackcolor"><p><span class="namespan">[';
                            }
                            else {
                                html = '<li class="oddlibackcolor"><p><span class="namespan">[';
                            }
                            html += entry['Prolocutor'] + ']:</span><span>';
                            html += entry['ProContent'] + '</span><span class="timespan">[';
                            html += mydate.pattern("HH:mm:ss") + ']</span></p></li>';
                            $("#live ul").append(html);
                        });
                    }
                }
            });
        }

        function dyoper() {
            var noCache = new Date();
            $.ajax({
                type: 'post',
                url: '/Models/GetInfoList.ashx?m=' + Date(),
                data: {},
                success: function (data) {
                    if (data != null) {
                        $("#live ul>li").remove();
                        jQuery.each(data, function (entryIndex, entry) {
                            var mydate = ConvertJSONDateToJSDateObject(entry['ProDate']);
                            var html = '';
                            if (entryIndex % 2 == 0) {
                                html = '<li class="evenlibackcolor"><p><span class="namespan">[';
                            }
                            else {
                                html = '<li class="oddlibackcolor"><p><span class="namespan">[';
                            }
                            html += entry['Prolocutor'] + ']:</span><span>';
                            html += entry['ProContent'] + '</span><span class="timespan">[';
                            html += mydate.pattern("HH:mm:ss") + ']</span></p></li>';
                            $("#live ul").append(html);
                        });
                    }
                }
            });
        }

        function ConvertJSONDateToJSDateObject(JSONDateString) {
            var date = new Date(parseInt(JSONDateString.replace("/Date(", "").replace(")/", ""), 10));
            return date;
        }
    </script>

下面看一下运行效果吧:

QQ截图20111025094755

至此,就完成了。程序源代码下载地址:https://files.cnblogs.com/nianming/LiveText20101025.rar

最后我想谢谢大家,对“我是否需要参加培训?”给我提出的宝贵意见,谢谢!!!

posted @ 2011-10-25 09:51  BobTian  阅读(3240)  评论(19编辑  收藏  举报