我有一些关于自定义模型绑定,模型状态和数据注释的问题.
1)如果我的模型上有数据注释,那么在自定义模型绑定器中进行验证是否是多余的,因为这就是我认为数据注释的重点.
2)为什么我的控制器将模型状态视为有效,即使它不是,主要是我使Name属性为null或太短.
3)将自定义模型绑定器视为构造方法是否可以,因为这是他们提醒我的.
首先是我的模型.
public class Projects
{
[Key]
[Required]
public Guid ProjectGuid { get; set; }
[Required]
public string AccountName { get; set; }
[Required(ErrorMessage = "Project name required")]
[StringLength(128, ErrorMessage = "Project name cannot exceed 128 characters")]
[MinLength(3, ErrorMessage = "Project name must be at least 3 characters")]
public string Name { get; set; }
[Required]
public long TotalTime { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我使用自定义模型绑定器来绑定模型的某些属性.请不要介意它只是试图让它运行然后重构它是快速和肮脏的.
public class ProjectModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) …Run Code Online (Sandbox Code Playgroud) validation asp.net-mvc modelbinders modelstate data-annotations
所以我最近对算法非常着迷.我最近实施了一个蚁群优化算法来解决TSP(非常有趣).现在我一直在寻找其他"问题"来解决.现在我想实现一个算法来解决涉及满足百分比要求的问题,并且低于任意限制.
例如:
用户输入:
1)限制 - 可用的能量.
2)"染色体"类型 - 蓝色(亚型 - 靛蓝等),红色(亚型 - 栗色等),黄色(亚型 - 浅黄色等) - 像蓝色这样的主要属性有一个"池"可供选择由不同的亚型组成,如靛蓝,浅蓝,海蓝等. - 每种子类型的颜色都有不同的成本.
3)"理想"解决方案所需类型的百分比(可以引入+/-%以允许更多种类). - 10%红色,30%蓝色,60%黄色.
输出:
1)满足两个要求的可能的最终解决方案,低于 - 但接近 - 所需成本并满足超类型的百分比要求.
所以举个例子.
这是一个非常简单的例子,显然它在现实中比这更复杂.
用户指定的成本应如下95 <=成本<= 105.
用户选择25%蓝色,25%黄色,50%红色.偏差+/- 5%
每种颜色的可用池
蓝色: 靛蓝:成本= 25; 海蓝:成本= 30; 海军蓝:成本= 75;
黄色: 浅黄色:成本= 20; 深黄色:成本= 30; 超级深黄色(lol):成本= 75;
红色: 栗色:成本= 20; 血红色:成本= 45; 鲜红色:成本= 55;
因此算法将运行并返回不同的组合.
组合1:靛蓝,深黄色,血红色:成本= 100:蓝色= 25%,黄色= 30%,红色= 55%.
组合2:海蓝色,浅黄色,血红色:成本= 105:蓝色= ~30%,黄色= ~20%,红色= ~50%
组合3:等等.
编辑:第二次编辑
输出将包含多组不同的组合.
例如,一个解决方案可能包含以下组合:
一个解决方案将由此表示:
组合1:成本= 20; 50%蓝色,25%黄色,25%红色;
组合2:成本= 30; 10%蓝色,50%黄色,40%红色; …