我会为属性类型创建一些域模型。
public enum AttributeTypeEnum
{
Currency,
Range,
List,
Number,
Text,
Boolean
}
public interface class IAttribute
{
int Id { get; set; }
string Name { get; set; }
AttributeTypeEnum AttType { get; set; }
}
public abstract class BaseAttribute
{
int Id { get;set;}
string Name { get;set;}
AttributeTypeEnum AttType { get; set; }
}
public class RangeAttribute<T> : BaseAttribute
{
T StartValue { get;set; }
T EndValue { get; set; }
}
然后,每个属性的一个或多个类别
public class CategoryAttribute
{
int Id { get; set; }
IAttribute Attribute { get; set; }
}
关联然后可以有属性的列表,针对每个类别
public class CategoryAttributeService()
{
public IList<CategoryAttributes> GetAttributes(int CategoryId)
{
return new IList<CategoryAttributes>();
}
}
你的控制器就可以返回这些列表ViewData.Model中的属性。
// controller action
public class CategoryAttributeController : Controller
{
public ActionResult CategoryAttributes(int categoryId)
{
CategoryAttributeService cas = new CategoryAttributeServices();
ViewData.Model = new CategoryAttributeViewData(categoryId)
{
Attributes = cas.GetAttributes(categoryId);
};
return View();
}
}
,让你的视图处理的每个项目的类型和改变每个项相应地即一个布尔值将有一个复选框(与具有开始和结束值的范围)的形式控制/显示,物料可能是一个列表框等 你有一些关于如何处理渲染的选择,你可以创建一个单独的.ascx控制每个属性类型生成表单控件,或者按照下面创建一个HTML helper方法
<%@ Page Title="" Language="C#" Inherits="ViewPage<CategoryAttributeViewData>" %>
<% foreach(CategoryAttribute attribute in ViewData.Model.Attributes) { %>
<%= Html.RenderAttribute(attribute) %>
<% } %>
和帮手方法如
public static string RenderAttribute(this HtmlHelper, ICategoryAttribute att)
{
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
switch(att.AttributeType)
{
case AttributeDataType.Boolean:
CreateCheckBox(writer, att);
break;
case AttributeDataType.List:
CreateListBox(writer, att);
break;
// Other types
}
}
stringWriter.ToString();
}
编辑:我有点离开以上所以如果我正确地理解这一点,每个市场都有一些类别(一对多)说美国和服装。 类别服装可以出现在许多市场。 每个类别有许多属性(一对多)(服装:颜色,大小),并且每个属性可以有许多市场(一对多)
- 市场的列表
- 类别
的列表
- MarketCategories名单
- CategoryAttributes名单
- 属性的列表
- AttributeMarkets名单
市场>市场分类>类别属性>属性>属性市场
这是正确的吗?
Mac。
不要落入一个类别中的所有产品跟踪所有该类别的属性?对于每个目标市场的属性可以这么说吗? – 2009-10-22 17:19:30
或者,分类与目标市场分级之间的关系?类别 - >目标市场 - >属性集 – 2009-10-22 17:22:29
产品属性集合是否等于类别属性集合加上目标市场属性集合,目标市场依赖于类别? – 2009-10-22 17:26:09