2016-03-04 59 views
0

我编码一个MVC 5互联网应用程序,我有关于一个问题,序列化ViewModel属性添加到JSON object如何将ViewModels属性设置为JSON对象?

下面是一个例子ViewModel

public class TestViewModel 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public string exampleValue { get; set; } 
} 

如果我有一个Create View,怎么能我serializeexampleValue财产是一个JSON object,这样,当[HttpPost]Create ActionResult收到对象时,exampleValue是一个JSON object

我希望能够在ViewModelModelState.IsValid代码执行验证,然后返回ViewModelView如果ViewModel不处于有效状态,就像任何其他[HttpPost]功能。

我写了下面的代码:

$.ajax({ 
    type: "POST", 
    async: true, 
    url: "https://**url**/Create", 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify(template), 
    success: function (data) { }, 
    error: function (data) { } 
}); 

然而,[HttpPost]Create ActionResult甚至没有收到ViewModel。我认为这与[ValidateAntiForgeryToken]有关。

是否有人可以帮我正确设置exampleValue属性是JSON object,使得对象可以被验证,然后返回到View如果没有处于有效状态?如果单个财产无法序列化到JSON object,是否可以使用ModelBinding,以便整个ViewModel发布为JSON object

+0

你可以发布你通过Ajax发送模板对象的例子吗? –

回答

0

U可以使用JsonFormatter如JsonMediaTypeFormatter根据您的视图模型要求反序列化JSON数据(或序列化回JSON)