在数据驱动菜单的数据库中存储 CSS 个标签名称...这是错误的吗?

Storing CSS Tag Names in a Database for Data Driven Menu's ... is it wrong?

我是 MVC 新手。我有一个项目,我试图设计一个由数据库中的记录驱动的 MVC TreeView 菜单系统。我的模型如下所示:

public interface IMenuItemModel
{
    string Id { get; set; }
    string Name { get; set; }
    string ActionName { get; set; }
    string ControllerName { get; set; }
    string ParentName { get; set; }
    string ImageCssClassName { get; set; }
    string CssClassName { get; set; }
}

我的视图使用 Razor 动态填充菜单项...

<li class="navbar-left">
            <div class="menu-item-separator">

            </div>
            <div id="@item.Id" class="navbar-left menu-item">
                <i class="@item.ImageCssClassName"></i>
                @Html.ActionLink(item.Name, item.ActionName, item.ControllerName)
                @GetDirectories(item)
         </div>
  </li>

我的问题是,在数据库中存储任何项目的 CSS tagName 是否违反了 MVC,或者只是一个糟糕的黑客想法?我没有在 View 之外的任何地方存储标记,我试图坚持 MVC 约定,但我想知道我是否正在沿着一条制造令人头疼的东西的道路前进,违反原则和架构,创建不必要的故障点,基本上是一个无法维护的解决方案。尤其是在数据库中存储 CSS class 之类的名称时...我不知道为什么,感觉很脏。

我或多或少地使用 Menu 项目作为在 MVC 中测试数据驱动设计概念的手段,看看哪些有效,哪些无效,但我遇到了瓶颈,我强烈怀疑像这样的组件的成功。

你的怀疑是正确的;在数据库中存储 class 个名字是错误的 - 大多数时候。可能存在将 class 名称存储在数据库中的情况(例如,如果您的站点允许其用户通过创建自己的 CSS 或修改 class 来完全自定义其外观和感觉名称),但根据您的问题判断,您没有将 class 名称存储在数据库中。

数据库是为保存数据而设计的,class 名称用于表示。通常从包含记录 ID 的字符串创建 class 或 ID 是更好的主意,如下所示:

<i class="icon_@item.IconId"></i><i class="icon_@item.Id"></i>