使用VB.NET在MVC 4中进行模型绑定不适用于使用自动实现属性的模型

时间:2014-10-13 05:50:56

标签: asp.net-mvc vb.net .net-4.5

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的自动实现属性?我错过了什么吗?

0 个答案:

没有答案