背景
我有一个使用 CSV 文件导入产品的 Asp.net MVC 3.5 应用程序。CSV 文件可以来自一组特定的可配置源。要配置新的 CSV 源,用户最初会指定哪些 CSV 列映射到哪些产品属性。此配置将存储为导入模板,并在之后每次导入时可供选择。
我在尝试为此功能规划文件夹/对象结构时遇到了困难。我理解(并且喜欢)Asp.net MVC 在路由方面的灵活性,所以我知道我们可以在这里做任何事情。但是,我想要任何可以帮助我们保持对象结构更加健全和可维护的建议。
最初,我设置了一个包含 Import.aspx 视图的产品文件夹。这似乎很适合控制器/动作模型。但是,当我考虑管理上述模板的功能时,事情变得令人困惑。
编辑:导入模板可以应用于不同的对象。所以 Product 只是一个可以为其创建一个或多个 ImportTemplate 的对象。例如,可能具有 ImportTemplate 的另一个对象可能是 Customer。
问题
我应该在 Product 文件夹下创建一个名为 ImportTemplate 的子文件夹并将 CRUD 视图放在那里吗?然后我会为导入模板函数添加一个自定义路由。我在这里关心的是文件夹深度以及与兄弟操作导入的混淆。还是应该将 ImportTemplate 提升一个级别,然后使用路由将其放置在 Product 文件夹下?听起来很乱。
也许文件夹结构应该是产品/导入/模板。我在这种情况下看到的问题是 Import 并不是一个真正的对象。我可以看到它是一个控制器,但它实际上是一个动作。如果我使用这种结构,我是否应该在 Import 文件夹中放置一个 Upload.aspx 视图(以替换上面提到的 Product/Import.aspx)?这似乎有点笨拙。
编辑:上面添加的要求是 ImportTemplate 可以与除产品(即客户)以外的对象相关联,将 ImportTemplate 文件夹直接放在 Views 文件夹下会更好吗?
构建此对象/文件夹层次结构的任何替代想法?
研究
为了研究这个问题,我回顾了有关文件夹结构和深度的问题。这里有几个问题有答案,但实际上并没有为我的问题提供答案。
一个例子
编辑:用户定期从第三方导入产品列表。他们正在从将上传到网站的 CSV 文件中导入数据。他们创建/添加产品导入模板的实例到他们的帐户。此模板实例存储以下设置:
- CSV 文件中名为“title”的列应导入到 Product Name 字段。
- CSV 中“类别”列下无法识别的类别应导入为“未知”类别。
不同的用户可能有不同的规则,基于不同的第 3 方 CSV 格式或基于他们自己的系统配置(即,他们没有上述用户的未知类别设置)。
- CSV 中名为“部件号”的列应导入到“产品名称”字段和“产品编号”字段。
- 默认情况下,无法识别的类别应导入“通用”类别。