2012-03-16 49 views
2

我试图绑定从Ajax调用接收到的模型,但不起作用。也许有人可以帮助我?将序列化的表单传递到Action并绑定到模型

我使用Ajax

调用ValidateFile行动
$.ajax({ 
        url: '@Url.Action("ValidateFile", "Converter")', 
        data: ({ file: fileName, formData: serializedForm }), 
        type: 'POST', 
        success: function (response) { 
         if (response.result) { 
         } else { 
          RemoveFile(fileName); 
         } 
        } 
       }); 

小提琴手演出这样的查询

file=!!!SP+Design!!!.txt&formData%5BEmail%5D=tomas%40mydomain.com 

我在和file参数填充但formData.Email财产的行动得到的数据始终是Null

[HttpPost] 
public JsonResult ValidateFile(string file, UploadOptionModel formData) 
{ 
} 

我的UploadOptionModel这我试图序列

@model PC.Models.UploadOptionModel 
@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(p => p.Email) 
} 

JS序列化功能

function serializeForm() { 
    var data = $("form").serializeArray(); 
    var formData = {}; 
    for (var i = 0; i < data.length; i++) { 
     formData[data[i].name] = data[i].value; 
    } 

    return formData; 
} 
+0

你的模型是怎么样的? \ – Rafay 2012-03-16 09:18:24

+0

它已经发布。 – Tomas 2012-03-16 09:19:10

+0

啊!我的不好..... – Rafay 2012-03-16 09:22:20

回答

4

您需要JSON模式

namespace PC.Models 
{ 
    public class UploadOptionModel 
    { 
     public string Email { get; set; } 
    } 
} 

表的数据进行编码和内容类型设置为JSON的模型活页夹与JSON一起工作。所以试试这个:

$.ajax({ 
    url: '@Url.Action("ValidateFile", "Converter")', 
    data: JSON.stringify({ file: fileName, formData: serializedForm }), 
    contentType: 'application/json', 
    type: 'POST', 
    success: function (response) { 
     if (response.result) { 
     } else { 
      RemoveFile(fileName); 
     } 
    } 
}); 
相关问题