MVC 4的模型绑定器似乎不适用于具有VB.NET自动实现属性的模型。
例如,采用这个人为的例子,我将一个简单的模型从JavaScript发布到一个控制器,该控制器反序列化(通过模型绑定器)输入并将其作为重新序列化的JSON返回。
VB.NET中的ViewModel,具有自动实现的属性:
Public Class CarViewModel
Property Year As Integer
Property Make As String
Property Model As String
End Class
控制器:
Public Class CarController
Inherits Controller
<HttpPost> _
Function Save(ByVal model as CarViewModel) As JsonResult
Return Json(model)
End Function
End Class
客户端JS:
function postData() {
var json = '{ "Year": 2000, "Make" : "Ford", "Model" : "Mustang" }';
$.ajax({
type: 'POST',
url: '/car/save',
data: json,
dataType: 'json',
contentType: 'application/json; charset=utf-8'
}).done(function (result) {
console.log(result);
}).error(function (e) {
console.log(e);
});
}
这不能按预期工作。从JavaScript,当我发布到MVC URL时,我希望看到
{ "Year": 2000, "Make" : "Ford", "Model" : "Mustang" }
但我改为看
{ "Year": 0, "Make" : "", "Model" : "" }
如果我将CarViewModel更改为使用标准属性:
Public Class CarViewModel
Private _year as Integer
Public Property Year As Integer
Get
Return _year
End Get
Set(ByVal value as Integer)
_year = value
End Set
End Property
' endless typing for other properties
End Class
正如预期的那样,MVC模型绑定器正常工作。
是否可以在MVC的模型绑定器中使用VB.NET的自动实现属性?我错过了什么吗?