我有这样的模型类:
public class SomeClass
{
public int EmployeeId {get;set;}
public int DayTotal {get;set}
}
Run Code Online (Sandbox Code Playgroud)
对于此模型类,我正在为'DayTotal'属性创建自定义ValidationAttribute.自定义验证器将针对另一个定义允许的最大天数的表检查输入的值'DayTotal'值.
在验证器中编写查询时,如何从"创建"视图中引用所选的"EmployeeId"?
public class DayTotalAttribute : ValidationAttribute
{
ProjectDBContext db = new ProjectDBContext();
public override bool IsValid(object value)
{
if (value == null)
{
return false;
}
var products = from p in db.EmployeeDayMax
where p.EmployeeId = ???
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
我的解决方案采取了不同的方法.有用的答案让我在其他地方寻找.此博客由斯科特谷有助于提供一个更简单的方法:
在我的模型中 - >
public class SomeClass : IValidateObject
{
public int EmployeeId {get; set;}
public int DayTotal {get; set;}
public IEnumerable<ValidationResult> Validate(ValidationContext …Run Code Online (Sandbox Code Playgroud) 我明白那个:
i++;
Run Code Online (Sandbox Code Playgroud)
应该采取更多的指示
++i;
Run Code Online (Sandbox Code Playgroud)
因为它生成了一个你不需要使用的中间结果,所以人们把"++ i"放在对中间结果毫无用处的代码行上.
但是,编译器非常聪明,他们可以判断结果是否被使用.他们可以说出各种各样的事情.但它们并不神奇
所以我很好奇 - 在现代编译器上确实选择了另一种实际问题,或者它是否只是简单地编译成相同的机器代码?
作为打印类的一部分,我希望能够在多个页面上打印长字符串,但我不知道如何计算整个字符串的高度,我将通过首先计算字符串中的行数来确定.我知道我可以计算换行符的数量,但我也使用自动换行,因此每当一行超过页面宽度时,就会添加换行符.所以我想我可以计算换行符的数量,并找出每一行的宽度,并找出是否需要每行的自动换行换行符,但这似乎是一个过于复杂的问题我想可以更简单地完成.
e.Graphics.DrawString(multiPageString, new Font("Courier New", 12), Brushes.Black, new RectangleF(0, 0, 810, pageHeight));
Run Code Online (Sandbox Code Playgroud)
如果您有任何建议,请告诉我们谢谢!
我正在寻找一个可以使函数递归的Python装饰器.我发现自己写了很多这样的函数:
def xyz(data):
if not isinstance(data, TypeThatDenotesSingularity):
return map(xyz, data)
return singular_xyz(data)
Run Code Online (Sandbox Code Playgroud)
我认为那里必须有一个装饰器(在标准库中?)可以减少一点点的符号:
@recursive(TypeThatDenotesSingularity)
def xyz(data):
return singular_xyz(data)
Run Code Online (Sandbox Code Playgroud)
我一直在寻找,但我似乎无法到达任何地方.也许我错过了一些必要的术语?
谢谢你指点我正确的方向!
正如在我之前的问题中,我正在尝试将Data.Binary.Put monad包装到另一个monad中,以便稍后我可以问它"它要写多少字节"或"文件中的当前位置是什么"等问题.
之前,我认为理解为什么它在使用一个简单的(IdentityT?)包装器时会泄漏内存会导致我解决我的问题.但即使你们帮我解决了这个简单的包装器的问题,用StateT或WriterT之类的东西包装它仍然会消耗太多的内存(并且通常会崩溃).
例如,这是我试图包装它的一种方式,它为大输入泄漏内存:
type Out = StateT Integer P.PutM ()
writeToFile :: String -> Out -> IO ()
writeToFile path out = BL.writeFile path $ P.runPut $ do runStateT out 0
return ()
这是一个更完整的代码示例,演示了该问题.
我想知道的是:
对于我的第二个问题,我想我应该更详细地解释一下我打算在磁盘上查看数据:它基本上是一个树结构,其中树的每个节点都表示为它的子节点的偏移表(加上一些附加数据).因此,要计算第n个孩子到偏移表中的偏移量,我需要知道子项0到n-1的大小加上当前偏移量(为了简化事情,假设每个节点都有固定数量的子节点).
谢谢你的期待.
更新:感谢nominolo我现在可以创建一个包裹Data.Binary.Put的monad,跟踪当前偏移并几乎不使用任何内存.这是通过放弃使用StateT转换器来支持使用Continuations的不同状态线程机制来完成的.
像这样:
type Offset = Int
newtype MyPut a = MyPut
{ unS :: forall r . (Offset -> a -> P.PutM r) -> Offset -> P.PutM r }
instance Monad MyPut where
return a = MyPut … 在设计jQuery自动完成插件的样式时,我将以下HTML代码硬连线到我的页面:
<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; top: 0px; left: 0px; display: none; "></ul>
Run Code Online (Sandbox Code Playgroud)
如何通过HTML禁用样式并通过CSS完成它?我不认为我的CSS文件会覆盖那种风格.
任何帮助都可以
我有一个用户用来输入有关发布信息的表单.完成后,单击"保存"进行更新.但是,在一些罕见的情况下(15,000条记录中有10条),用户双击了保存按钮并导致双重表单提交重复发布项目.
我尝试使用它来防止它:
$('input[type=submit]').click(function(){
$('input[type=submit]').attr('disabled',true);
//return true;
});
Run Code Online (Sandbox Code Playgroud)
但问题是,它在Safari/Firefox等中完美运行,但在Internet Explorer 8中不起作用(可能不适用于6和7)
当我在IE8中按保存时,该按钮被禁用,就是这样,根本没有提交表单.
(我尝试过但没有返回true;)
有谁知道可以处理庞大数据集的Javascript图表库?
"巨大",我的意思是绘制一个大约1,000行和25,000个数据点的折线图.(每行的点数分布不均匀.很多行的点数很少,但有些点数最多为4,000.)这是一个示例数据文件.
目前我正在使用Highcharts,但是在绘制示例文件方面它太慢了.这是我的测试网站,使用Highcharts绘制示例数据文件.警告:转到该页面会耗尽您的处理器一段时间:)
我不想使用Flash或Silverlight.
我希望使用Javascript,以便我的用户可以缩放+平移图表,并打开/关闭线等.但如果这是任何Javascript图表库处理的数据太多,那么我将不得不图服务器端.
对于数学包,我正在尝试为不同类型的矩阵提供类,例如典型的矩形矩阵,三角矩阵,对角矩阵等.原因很自然地是节省了有效存储和特殊矩阵的高效算法实现.但是我仍然希望具有重载运算符的灵活性,其中C = A + B将A和B作为任何类型的矩阵并返回相应的结果(如果其中一个操作数是矩形的,则结果可以降级为典型的矩形矩阵) .
我想到了两个可能的想法,这两个想法都很混乱:
(1)IMatrix接口,它列出了需要为每种类型的矩阵实现的所有方法,例如转置,反转等,其有效实现对于每种类型的矩阵是不同的.这里有两个问题:(a)运算符重载是静态方法,因此不能在接口中列出,甚至不能在实现接口的基类中列出.运算符重载必须分别写在每个类中,我不可能实现C = A + B类型的操作(如上所述),没有在客户端代码中进行混乱的类型检查和转换,我真的想避免.(b)当我定义运算符重载时,我不能将两个操作数都作为接口:即我不能在DiagonalMatrix类中执行以下操作:
public override IMatrix operator +(IMAtrix lhsMatrix, IMatrix rhsMatrix)
{ ... }
Run Code Online (Sandbox Code Playgroud)
(2)可以有一个矩阵类,矩阵类型变量存储在类中(可以是枚举).根据类型,我们可以实现数据结构和算法.然后,操作员重载将无缝地工作.这里有一个问题:(a)在启动特定算法之前,类可能会有很大的可能用于检查矩阵类型的switch-case语法.对于每个二元运算符,我必须有n ^ 2个case,n是我想要实现的矩阵类型的数量.也可能是维护噩梦.
看起来,如果没有运算符重载细节,我可以使用工厂模式或访问者模式,但不能使用op重载.什么是解决这个问题的最佳方法?
到目前为止我找到的资源:
编辑:
4/25/2011:到目前为止,我已经找到了有关此问题的更多资源.
假设我有一个Hello World单个Activity应用程序.我启动这个应用程序.
在每种情况下调用哪些方法:
一旦用户通过应用程序图标再次启动应用程序,就会调用哪些方法(假设操作系统没有"其他应用程序需要内存条件"):
谢谢大家.
编辑:额外信用:用户如何在onPause不调用的情况下调用onStop?