• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

使用Markdown和ASP.NET MVC3创建基于文本的博客

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言:

步骤1:创建初始的Blog应用

本次示例使用Phil Haack's Really Empty MVC Project Template,添加文件夹:App_Data/BlogPosts,Content/BlogPostImages;添加Controller: HomeController;以及相关联的View Views/Home/Index.cshtml;和其他Shared Views,初始的CSS样式。完整的Solution结构和完成后的应用运行截图如下:

placeholder:截图1

步骤2:安装Markdown

Markdown是一个text-to-HTML转化工具,针对人群为网络写手,博主等。Markdown允许你用容易读/写的纯文本格式写文章,然后转变成结构正确的XHTML(或者HTML)。Markdown格式的文本设计目的是允许内容以as-is发布,像纯文本,不需要用tag标记等。Markdown是免费软件,遵循BSD-style开源协议license。

既然我们使用MVC 3(语言为C#),可以利用MarkdownSharp,也是一个开源的Markdown处理器的C#实现,在Stack Overflow上被featured。使用Nuget Package Manager console安装(添加一个单独文件MarkdownSharp.dll到Bin目录):

PM> Install-Package MarkdownSharp

步骤3:Blog Post和Summary Data命名约定

Blog post是.txt文件,存储在文件夹AppData/BlogPosts。本次示例,我们对文件blog post和文件blog summary使用如下的命名约定,使用字符分割日期和名称信息:

YYYY-MM-DD[blog-post-name-separated-by-hyphens].txt // blog post markdown syntax content
YYYY-MM-DD
[blog-post-name-separated-by-hyphens]_summary.txt // JSON formatted blog summary info

使用两个文件的目的是将Markdown的内容和Blog Post summary。Markdown的目标就是内容的as-is,无须任何额外的标记tag或者指令。YYYY-MM-DD用来表示博客发布时间,[]内为博客标题,使用-字符分开单词。Summary文件使用JSON语法现实blog summary。

步骤4:创建File System Data Model

首先,创建model Models/BlogListing.cs,用来表征创建博客需要的数据。

namespace TxtBasedBlog.Sample.Models
{
    public class BlogListing
    {
        public string Url { get; set; }
        public string Title { get; set; }
        public string ShortDescription { get; set; }
        public string Content { get; set; }
        public string Author { get; set; }
        public DateTime PostDate { get; set; }
        public string Image { get; set; }
    }
}

然后,创建model Models/BlogPost.cs负责加载博客文章内容。

namespace TxtBasedBlog.Sample.Models
{
    public class BlogPost : BlogListing
    {
        public string Body { get; set; }
    }
}

步骤5:写一个Blog Post示例

遵循上述命名约定,我们创建两个示例文件。Summary文件使用JSON语法,完整的blog post使用Markdown语法。 

{
    Title: "ASP.NET MVC Overview",
    Url: "asp_net_mvc_overview",
    PostDate: "2012-02-09",
    Author: "Microsoft ASP.NET Team",
    ShortDescription: "ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup for enjoyable, agile development.",
    Image: "content/blogpostimages/image001.jpg"
}

**ASP.NET MVC** gives you a powerful, patterns-based way to build dynamic websites that enables a clean separation of concerns and that gives you full control over markup for enjoyable, agile development. 

MVC includes many features that enable:

* fast, TDD-friendly development for creating sophisticated applications
* use the latest web standards.

[Learn More About MVC](http://www.asp.net/mvc "Learn more about MVC today!")

步骤6:显示博客列表

在web.config中的appSetting键值中添加BlogPostsDirectory配置,这样可以无需编译修改数据目录。

 

<appSettings>
    ...
    <add key="BlogPostsDirectory" value="~/App_Data/BlogPosts"/>
    ...
</appSettings>

 

Models/BlogFileSystemManager.cs用来检查上面配置的数据目录,然后返回博客列表。

 

namespace TxtBasedBlog.Sample.Models
{
    public class BlogFileSystemManager
    {
        private string filePathToBlogPosts;

        public BlogFileSystemManager(string dirPath)
        {
            filePathToBlogPosts = dirPath;
        }

        public List<BlogListing> GetBlogListings(int limit)
        {
            var allFileNames = getBlogPostsFiles();
            var blogListings = new List<BlogListing>();
            foreach (var fileName in allFileNames.OrderByDescending(i => i).Take(limit))
            {
                var fileData = File.ReadAllText(fileName);
                var blogListing = 
                       
                    
                    

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net调用ocx插件发布时间:2022-07-10
下一篇:
在windows上安装ASP.NET 5(译文)发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap