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