我正在关注一篇优秀的Scott Guthrie文章(MVC form posting scenarios)并尝试将其转换为VB。除了一件之外我一切都在工作。在文章的某一点上,他将自己的业务规则添加到LINQ to SQL实体中,如下所示:
public partial class Product
{
partial void OnValidate(ChangeAction action)
{
...
}
}
在将其转换为VB时,我不确定如何翻译OnValidate的“部分”部分。如果我这样做:
Partial Public Class Product
Private Sub OnValidate(ByVal action As ChangeAction)
...
End Sub
End Class
然后我在OnValidate中运行的业务规则工作,但它不会抛出坏数据的任何异常(即十进制字段中的字符),这是有道理的,因为我基本上覆盖了产品的验证。
除了我的版本之外,确保底层类的OnValidate执行的语法是什么?
编辑:请注意,使OnValidate“Partial Private Sub”产生以下错误:
答案 0 :(得分:2)
Partial Private Sub OnValidate(ByVal action As ChangeAction)
...
End Sub
答案 1 :(得分:2)
通常情况下,问题出现在代码的其他地方。我一直在某处某处从“UpdateModel”切换到“TryUpdateModel”,这意味着不再抛出简单的赋值错误。回到“UpdateModel”并使用上面的“Private Sub OnValidate”现在可以正常工作。
OnValidate已在数据上下文中标记为“Partial”,因为它意味着被覆盖 - 毕竟我并没有破坏底层代码。
答案 2 :(得分:1)
将其标记为私有执行
'designer'
Partial Class Product
' Definition of the partial method signature.'
Partial Private Sub OnValidate(ByVal action As ChangeAction)
End Sub
End Class
'your implmentation'
Partial Class Product
' Definition of the partial method signature.'
Private Sub OnValidate(ByVal action As ChangeAction)
'do things'
End Sub
End Class