我一直在阅读很多关于如何创建自己的 ASP.NET MVC DefaultModelBinder 的问题,这是我认为我需要的。
所以简而言之,我需要从模型属性中提取一些信息并将其添加到同一模型上的其他属性中。我认为最好在属性上有一个属性来告诉这是要从中提取的属性,然后指定另一个属性的名称,如下所示:
Public Class MyModel
<MyAttribute(ExtraInfoProperty:="ExtraInfo")>
Public Property MyProperty As String
Public Property ExtraInfo As String
End Class
然后我会像这样创建自己的 DefaultModelBinder
Public Class MyModelBinder
Inherits DefaultModelBinder
Protected Overrides Sub SetProperty(controllerContext As System.Web.Mvc.ControllerContext, bindingContext As System.Web.Mvc.ModelBindingContext, propertyDescriptor As System.ComponentModel.PropertyDescriptor, value As Object)
For Each attribute As Attribute In propertyDescriptor.Attributes
If TypeOf attribute Is MyAttribute Then
Dim extraInfo As String = ExtractExtraInfo(value)
' Set to ExtraInfo-property
End If
Next
MyBase.SetProperty(controllerContext, bindingContext, propertyDescriptor, value)
End Sub
End Class
但是 SetProperty 是正确的方法还是我需要覆盖 BindProperty 或其他东西?你会怎么做?
谢谢