现在的位置: 首页 > 综合 > 正文

开源我的个人小网站

2013年02月10日 ⁄ 综合 ⁄ 共 3779字 ⁄ 字号 评论关闭

继上上周和上周两个周末都在学习C#基础,这周终于换种方式过了(哎!尼玛还是对着电脑,不是对着妹子T_T)。自从上次在园子里看到博友分享了前端框架Bootstrap后,就一直想用它来搞个小站点玩玩。这个周末终于实践了一下(我之前把Bootstrap官网的Demo全看了一遍,一点没研究的童鞋可能要看一下,不难的),感觉效果还可以,达到了我想要的简约风格(其实对我这样的前端瞎来说,搞复杂的也搞不来)。好了,废话不讲了,直接上成品图了。感兴趣童鞋也们也可直接看真身:传送门http://heku.hk-001.jd43.com/(自己的域名暂时还没绑上去)

1、有图有真相

这是首页(也不知道首页该怎么搞,最后就搞成这样了)

这是博客页面(数据来自博客园Rss)

这是微博页面(图省事,直接放了一个新浪开放平台组件)

还有两个:实验室(实验室我是打算留做一些示例的)和关于就不贴了。

2、源码简单介绍

从上图中,细心的朋友也能看出来,我其实这里只是一些展示,没有做数据存储,所以源码其实很简单,不介绍大家都看得懂。不过还是跑马灯的快速过一遍吧,由于本人在mvc方面研究不深,如果有能优化的地方,还请大家指点。

首先网站结构如下(除了MVC自带的那些,多出的部分已经标出来了):

ErrorFilter文件,用来自定义异常时处理,这里只是增加了异常时发送邮件给我的逻辑。

AppHelper文件,我一般喜欢用一个叫AppHelper的文件来读写配置文件,这样配置里相关节点改名称的话,项目里也只是这个类中要改一下,其他引用处都不用改。

MailHelper文件,简单封装了微软的WebMail类,大家运行前记得配置一下这里的邮箱信息,为什么不放在Web.Config里呢,因为有密码啊,上传到那种便宜主机里太。。。

XMLHelper文件,解析博客园Rss的,Models文件夹下的BlogModel是我对照着博客园Rss写的实体类。

3、几个小问题

1、在实现过程中,遇到一个问题,就是菜单的选中状态处理(首页时“首页”菜单选中,博客页“博客”菜单选中)。

菜单我是放在一个分部视图(_Navbar.cshtml)里的,在不同的页面选中不同的菜单,我是通过在每个菜单生成时都判断Action名称来做的:

@helper CheckRoute(string action)
    {
        bool result = string.Equals(action, Request.RequestContext.RouteData.Values["action"].ToString(), StringComparison.OrdinalIgnoreCase);
        if (result)
        {<text>class="active"</text>}
}
<div class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <a class="brand" href="@Url.Action("Index", "Home")" tabindex="-1">HEKU</a>
            <ul class="nav">
                <li @CheckRoute("Index")><a href="@Url.Action("Index", "Home")" tabindex="1">首页</a></li>
                <li @CheckRoute("Blog")><a href="@Url.Action("Blog", "Home")" tabindex="2">博客</a></li>
                <li @CheckRoute("Weibo")><a href="@Url.Action("Weibo", "Home")" tabindex="3">微博</a></li>
                <li @CheckRoute("Lab")><a href="@Url.Action("Lab", "Home")" tabindex="3">实验室</a></li>@*laboratory*@
                <li @CheckRoute("About")><a href="@Url.Action("About", "Home")" tabindex="5">关于</a></li>
            </ul>
        </div>
    </div>
</div>

不知道有没有更好的办法?大家平时都是怎么做的啊?

2、在自定义日志拦截器的过程中,也遇到了一个问题,最终未解决,还请大家支招!

下面是这个类的代码(就是增加了异常时发送邮件的逻辑):

    public sealed class ErrorFilter : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);

            //异常信息
            StringBuilder content = new StringBuilder("================Exception================");
            content.Append("<hr/>");
            content.AppendFormat("ExceptionTime:{0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            content.Append("<hr/>");
            content.AppendFormat("Message:{0}", filterContext.Exception.Message);
            content.Append("<hr/>");
            content.AppendFormat("Source:{0}", filterContext.Exception.Source);
            content.Append("<hr/>");
            content.AppendFormat("StackTrace:{0}", filterContext.Exception.StackTrace);
            content.Append("<hr/>");
            content.AppendFormat("AccessIp:{0}", filterContext.HttpContext.Request.UserHostAddress);

            //发送邮件
            SendMailAsync(content.ToString());
            //ThreadPool.QueueUserWorkItem(new WaitCallback(SendMailAsync), content.ToString());  //异步处理报错,何解?
        }

        private void SendMailAsync(object body)
        {
            try
            {
                MailHelper.SendMail(AppHelper.MailTo, "网站异常", body as string);
            }
            catch
            { }
        }
    }

问题就是图中注释掉的部分,原本是想让这个邮件发送是异步来执行。结果不行,报错!知道为什么的请告诉我一下。(错误重现的方式:先把MailHelper里配置好,再把Web.Config里邮件接收人配置一下,把上面代码处同步改成异步,然后在Action里随便抛一个异常。)

4、拿到源码怎么“去何苦化”

如果你感觉页面效果还行,想在此基础上改改,那么:

首先,你要把Web.Config里的这三处改成自己的。(Rss名称空间不用改,大家都一样的应该),改完之后博客页应该就是你的博文了。

    <!--博客园博客Rss-->
    <add key="Rss" value="http://feed.cnblogs.com/blog/u/93918/rss"/>
    <!--博客Rss的名称空间-->
    <add key="XMLNS" value="http://www.w3.org/2005/Atom"/>
    <!--系统异常时,接收异常信息的邮箱-->
    <add key="MailTo" value=""/>

然后就是把MailHelper类配置一下:

        static MailHelper()
        {
            //============================请自行配置此处啊啊啊=========================
            WebMail.SmtpServer = "";
            WebMail.SmtpPort = 0;
            WebMail.UserName = "";
            WebMail.Password = "";
            WebMail.From = "";
            WebMail.SmtpUseDefaultCredentials = true;
        }

再去新浪微博(或其他微博)开放平台找一下微博秀组件(新浪的http://app.weibo.com/tool/weiboshow),生成一下脚本代码,然后替换掉Weibo.cshtml里的相关代码,此时微博页面也是你的了。(顺便提醒一下,微博的这个组件本地调试时可能显示不出来,不知道为什么,网上找答案时也看到有人遇到过。)

剩下还有首页与关于两个页面,大家直接改Index.cshtml和About.cshtml吧。

5、源码

源码下载(内有惊喜,请自行发现~),如果哪位童鞋在此基础上做出改进了(无论功能或效果),也请到时带我分享一下啊~~~

抱歉!评论已关闭.