2012-03-16 26 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); 
     } 
    } 
});