小编Jer*_*eir的帖子

允许操作和视图和模型中的高度变化

我正在设计一个产品管理系统.我想知道在我的应用程序中处理每个Action/View中的大量变化的最佳方法.该应用程序处理20个类别和12个目标市场,每个类别都会影响每个产品需要收集的数据.例如,"QuickAdd"操作接收核心数据,如产品名称和SKU,以及基于产品添加到的类别和目标市场的组合的一些其他关键信息(下面的示例).类别和目标市场不是产品的可配置属性,使用该系统的用户只能在特定组合下工作,例如Toys/USA.提到这一点的原因是我无法将表单设计为具有每个Category/Market组合的属性部分,它需要工作就像表单仅针对该类别/市场 - 用户不了解其他组合.

希望澄清可能情况的一些例子:

如果我要将产品添加到美国目标市场玩具类别中,我需要询问"年龄范围"和"它是否通过了安全检查".

如果我要将产品添加到Toys with Target Market Mexico类别,我只需要询问"年龄范围".

如果我要将产品添加到美国目标市场服装类别,我需要询问"样式"和"材料"

如果我要将产品添加到加拿大目标市场服装类别,我需要询问"样式","材料"和"美国价格"

我们有20个类别和12个目标市场,另外有10种形式需要以这种方式表现,因此理论上有2400种不同的行动/观点/模型

所以问题是,在ASP.NET MVC中,处理显示所有这些动态表单和处理发送到操作的数据变体的最佳方法是什么?

编辑
有关如何确定产品属性的说明:它们基于属于市场中类别的产品的层次结构.例如,它不是我们要求的所有玩具属性和美国属性的添加,它是在美国市场上销售的玩具产品的属性.在美国销售的玩具需要"安全检查"信息,但美国的服装不需要.墨西哥的玩具也不需要"安全检查"信息,因此该属性并非所有Toys或所有美国产品所固有,而是属于类别和市场的组合.

architecture asp.net-mvc

10
推荐指数
1
解决办法
463
查看次数

编译器在用于自我分配时是否优化Null Coalescing运算符?

这两个代码块在功能上是相同的

if (myObj == null)
{
    myObj = new MyObj();
}
Run Code Online (Sandbox Code Playgroud)

myObj = myObj ?? new MyObj();
Run Code Online (Sandbox Code Playgroud)

但是,使用null合并运算符的那个在myObj不为null的情况下执行不必要的赋值.但后来我想也许编译器可以优化这些自我分配.有谁知道编译器是否会注意到正在发生的事情并且基本上将底部片段转换为顶部片段?

.net c#-4.0

9
推荐指数
1
解决办法
191
查看次数

使用StructureMap实现策略模式的最佳方式

我的Web应用程序在业务逻辑和表示逻辑上有一些细微的变化,具体取决于登录用户的类型.看起来通过根据用户类型注入不同的具体类来获得变化非常适合DI.所以我想知道我应该使用StructureMap的哪些功能来实现这一目标(或者如果我基于DI的目的而离开).

(我刚刚了解到配置文件不是实现此目的的方法,因为设置配置文件不是每线程操作:StructureMap配置文件线程安全吗?)

编辑

这是怎么回事?

public class HomeController
{
    private ISomeDependancy _someDependancy;

    public HomeController(ISomeDependancy someDependancy)
    {
        _someDependancy = someDependancy;
    }

    public string GetNameFromDependancy()
    {
        return _someDependancy.GetName();
    }
}

public interface ISomeDependancy
{
    string GetName();
}

public class VersionASomeDependancy : ISomeDependancy
{
    public string GetName()
    {
        return "My Name is Version A";
    }
}

public class VersionBSomeDependancy : ISomeDependancy
{
    public string GetName()
    {
        return "My Name is Version B";
    }
}

public class VersionARegistry : Registry
{
    public VersionARegistry() …
Run Code Online (Sandbox Code Playgroud)

.net structuremap design-patterns dependency-injection

8
推荐指数
2
解决办法
3582
查看次数

为什么我不能将具体类型列表分配给该具体界面的列表?

为什么这不编译?

public interface IConcrete { }

public class Concrete : IConcrete { }

public class Runner
{
    public static void Main()
    {
        var myList = new List<Concrete>();
        DoStuffWithInterfaceList(myList);  // compiler doesn't allow this
    }

    public static void DoStuffWithInterfaceList(List<IConcrete> listOfInterfaces) { }

}
Run Code Online (Sandbox Code Playgroud)

什么是将myList设置为正确类型的最快方法?

编辑我弄乱了DoStuffWithInterfaceList示例

c#

8
推荐指数
2
解决办法
2460
查看次数

如何编写递归方法的Mockist测试

如果我有一个在某种条件下调用自己的方法,是否可以编写测试来验证行为?我很想看到一个例子,我不关心模拟框架或语言.我在C#中使用RhinoMocks所以我很好奇它是否是框架的缺失特征,或者我是否误解了一些基本的东西,或者它是否是不可能的.

unit-testing rhino-mocks moq mocking

8
推荐指数
2
解决办法
5825
查看次数

为什么resharper提出以下建议?

我的代码是......

public static void AssertNotNull<T>(string name, T val) {
    if (val == null)
        throw new ArgumentNullException(String.Format("{0} must not be null", name));
}
Run Code Online (Sandbox Code Playgroud)

Resharper推荐......

public static void AssertNotNull<T>(string name, T val) {
    if (Equals(val, default(T)))
        throw new ArgumentNullException(String.Format("{0} must not be null", name));
}
Run Code Online (Sandbox Code Playgroud)

c# resharper

7
推荐指数
2
解决办法
476
查看次数

有关xp-dev.com的任何经验吗?

我知道有很多线程推荐xp-dev.com,但我想知道是否有人有任何理由不推荐这项服务?

svn

7
推荐指数
1
解决办法
3603
查看次数

如何在VisualStudio中处理多个同名的打开文件?

任何人都知道VisualStudio中的任何内容,当你打开一堆名为同一个文件的文件时,你的生活会更轻松吗?通常我会打开一堆同名的文件,我不知道有什么方法可以区分它们,所以我只需要通过解决方案资源管理器.是否有设置为这个愚蠢的事情添加悬停文本的完整路径?

替代文字http://img518.imageshack.us/img518/2094/91544289.png

这与Visual Studio不完全相同 - 用于管理许多打开文件的工作的提示

我知道ctrl-tab提供了完整的路径,但它仍然有点麻烦,因为你必须向左箭头查看完整路径,并且当有大量文件打开时,它实际上并不比使用解决方案资源管理器快.

visual-studio

7
推荐指数
1
解决办法
801
查看次数

具有默认列的列与具有默认约束的列之间有什么区别?

可以像这样添加列的默认值

ALTER TABLE [MyTable] ADD DEFAULT ((0)) FOR [MyColumn]
Run Code Online (Sandbox Code Playgroud)

或者像这样

ALTER TABLE [MyTable] ADD CONSTRAINT [DF_MyTable_MyColumn]  DEFAULT ((0)) FOR [MyColumn]
Run Code Online (Sandbox Code Playgroud)

两者有什么区别?

sql t-sql sql-server

7
推荐指数
1
解决办法
1191
查看次数

常见编程特殊字符的昵称是什么?

句号,感叹号和星号有常见的俚语名称:
."点"
!"爆炸"
*"明星"

但是对于像
%
&
<
{
[
;; 这样的字符来说,有多个明显的单音节名称是什么 ?
等等

language-agnostic

6
推荐指数
4
解决办法
5664
查看次数