Статьи

Представляем jBlogMvc

В этой части я анонсировал jBlogMvc ASP.NET MVC и jQuery blogengine, которые я создаю, чтобы узнать больше о двух новых технологиях, и обсудить нулевую версию движка блога.

Давайте начнем

Итак, что же такое jBlogMvc ? Это небольшой блог, который я собираюсь создать в гибком процессе, jBlogMvc, если вы не заметили, j означает jQuery, Blog для самого движка и Mvc для ASP.NET MVC. Здесь я говорю, что этот движок будет простым и полным, я постараюсь максимально расширить возможности и создать его расширяемым способом, таким как современные движки блогов, для включения тем, виджетов и плагинов. Также я должен отметить, что работа над этим движком блога полностью вдохновлена ​​замечательными движками блогов с открытым исходным кодом, которые включают BlogEngine.NET, WordPress и другие не блог-движки, как yonkly, и многие другие.

Что покроет часть 0?

Помимо анонса движка блога, в этой части у меня будет версия 0, которая будет иметь следующее:

  • Vistor

    • Просмотр сообщений в хронологическом порядке.
    • Просмотр отдельных сообщений.

Хорошо, покажи мне код!

База данных

Для этой части ZERO я не включил много для движка блога, единственная таблица, которую я включил, является таблицей Post, как показано ниже, я верю, что эта таблица будет расширяться больше по времени и большему количеству частей в серии.

 

Маршруты

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Posts",
"post/{slug}",
new { controller = "Home", action = "post" }
);

routes.MapRoute(
"Default",
"{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);

}

модели

Просто добавил сюда файл dbml (Linq to Sql DataContext), и я добавил файл PostEx.cs и добавил свойство для частичных классов Post, God Bless. PostEx.cs, как показано в листинге 2.

 

public partial class Post
{
public string RelativeLink
{
get
{
return VirtualPathUtility.ToAbsolute("~/post/") + Slug;
}
}
}

 

Контроллеры

Пока у меня есть только один контроллер HomeController, который на данный момент имеет всего 3 действия.

  • index: отображает все сообщения в хронологическом порядке.
  • post (slug): отображает сообщение с соответствующим слагом, если не найдено, отображает сообщение об ошибке404
  • premalink (guid): визуализирует представление для сообщения с соответствующим guid, если не найдено, оно отображает сообщение об ошибке404

HomeController, как показано в листинге 2.

public class HomeController : Controller
{
/// <summary>
/// Renders a view with all posts sorted in a chronological order
/// </summary>
/// <returns></returns>
public ActionResult index()
{
var posts = Helpers.GetPostList() ?? new List<Post>();
return View(posts);
}

/// <summary>
/// Renders a view for the post with a matching slug
/// if not found it renders error404 view
/// </summary>
/// <param name="slug">Post slug to be matched</param>
public ActionResult post(string slug)
{
var post = Helpers.GetPostBySlug(slug);
return post != null ? View("single", post) : View("error404");
}

/// <summary>
/// Renders a view for the post with a matching premalink
/// if not found it renders error404 view
/// </summary>
/// <param name="id">Post premalink to be matched</param>
public ActionResult premalink(Guid id)
{
var post = Helpers.GetPostByPemalink(id);
return post != null ? View("single", post) : View("error404");
}
}

Просмотры

Теперь решение содержит одну главную страницу для всего сайта, три просмотра и один пользовательский контроль

  • site.Master: дает общий внешний вид сайта
  • index.aspx: отображает все сообщения.
  • single.aspx: выводит один пост.
  • error404.aspx: будет отображаться при запросе несоответствующего сообщения slug или premalink
  • _postView.ascx: шаблон сообщения, который будет использоваться

Utils

Два занятия, которые мне помогают

  • Config: Содержит некоторые статические свойства, которые читают из жестко закодированных строк (в следующей версии следует читать из web.config или даже из таблицы базы данных).
  • Помощники: только некоторые распространенные вспомогательные методы.

Файл конфигурации

 

public class Config
{
static public string BlogName { get { return "My Blog Name"; } }
static public string BlogDescription { get { return "This blog is built using the ASP.NET MVC framework."; } }
static public string BlogUrl { get { return VirtualPathUtility.ToAbsolute("~/"); } }
static public string Version { get { return "0.1.0.0"; } }
}