1

我已经开始构建一个完全不专业且不被任何人使用的博客引擎。所以,用简单的英语,我不能告诉你继续为自己运行这个,你会很高兴。

您可能会看到我迄今为止编写的完整代码:

https://github.com/tugberkugurlu/MvcBloggy

虽然现在我正在研究DAL,但我也尝试制定我需要做的事情。我被困在这里的一点是我如何处理博客引擎的主题选择。

  • 我应该如何开始构建基础知识?我应该创建一个骨架 html 并让其他人编写 CSS 并基本上选择它吗?或者是其他东西?
  • 就 ASP.NET MVC 结构而言,处理此功能的最佳方法是什么。

到目前为止,我不确定你们中是否有人做过这样的事情。如果您能提供一种方法,我将不胜感激。

4

2 回答 2

1

建议你看看NBlog temable博客引擎

https://github.com/ChrisFulstow/NBlog

特别是看一下ThemeableRazorViewEngine.cs类

https://github.com/ChrisFulstow/NBlog/blob/master/NBlog.Web/Application/Infrastructure/ThemeableRazorViewEngine.cs

using System.Web.Mvc;
using NBlog.Web.Application.Service;

namespace NBlog.Web.Application.Infrastructure
{
public class ThemeableRazorViewEngine : RazorViewEngine
{
    private readonly IThemeService _themeService;

    public ThemeableRazorViewEngine(IThemeService themeService)
    {
        _themeService = themeService;

        base.ViewLocationFormats = new[]
        {
            _themeService.Current.BasePath + "/Views/{1}/{0}.cshtml",
            _themeService.Current.BasePath + "/Views/Shared/{0}.cshtml",
            "~/Themes/Default/Views/{1}/{0}.cshtml"                
        };

        base.PartialViewLocationFormats = new string[] {
            _themeService.Current.BasePath + "/Views/{1}/{0}.cshtml",
            _themeService.Current.BasePath + "/Views/Shared/{0}.cshtml",
            "~/Themes/Default/Views/Shared/{0}.cshtml"
        };
    }

    public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
    {           
        // bypass the view cache, the view will change depending on the current theme
        const bool useViewCache = false;

        return base.FindView(controllerContext, viewName, masterName, useViewCache);
    }
}
}
于 2011-10-26T15:10:52.010 回答
0

完全主题化的 Web 应用程序是一个非常复杂的问题。在您拥有功能强大的博客引擎之前,您甚至不应该尝试解决它。

一个简单且相当容易实现自定义的方法是允许用户选择 .css 文件,并确保页面中的所有元素都可以使用适当的 ID/类轻松寻址/选择。

于 2011-10-27T01:35:33.627 回答