2011-12-27 49 views
0

我想將JSON字符串化的對象綁定到模型和控制器中的其他幾個字符串,它不工作。使用json在asp.net中對象綁定mvc2

是不可能的,

$.ajax({ 
url: "/SrcManager/AddDataSource", 
type: "POST", 
data: JSON.stringify({ 
    content: ct, 
    dataSourceName: $("#dataSrcName").val(), 
    parameters: parametersCollection, 
    sourceContentId: sourceContentId, 
    sourceId: null, 
    type: contType 
}), 
success: function (data) { 
    if (data.length > 1) 
    { 
     alert("DataSource Saved Successfully"); 
     $("#dataSrcId").val(data); 
    } 
} 
}); 

和VAR parametersCollection = [];

function IPParameters(paramName,paramValue){this.ParamName = paramName; this.ParamValue = paramValue; }

*** action method : public string AddDataSource(ContentModel scvm){.........} 

爲什麼上面無法正常工作。這是不支持的或代碼中的任何錯誤,請提出正確的方法。

在ContentModel中,我將參數映射到List<Parameters>

我也在global.asax中加入了JsonValueProviderFactory

C#的型號是:

public class SourceContentViewModel 
{ 
    public string sourceId { get; set; } 

    public string dataSourceName { get; set; } 

    public string sourceContentId { get; set; } 

    public string content { get; set; } 

    public string type { get; set; } 
    public List<Parameters> parameters { get; set; } 

    public SourceContentViewModel() 
    { 
     parameters = new List<Parameters>(); 
    } 
} 

public class Parameters 
{ 
    public string ParamName { get; set; } 
    public string ParamValue { get; set; } 
} 
+0

您可以顯示您的操作方法和您用來發送該數據的JavaScript嗎? – Jan 2011-12-27 09:49:28

+0

@Jan:我自己更新了這個問題 – Saravanan 2011-12-27 09:54:28

+0

你能說明ContentModel類是如何定義的嗎?你的問題是關於模型綁定。 – Jan 2011-12-27 09:56:42

回答

2

不能JSON發送到一個ASP.NET MVC 2應用程序,因爲沒有JSON提供工廠外的即裝即用,讓您閱讀請求。它建立在ASP.NET MVC 3中。你可以看看following blog post,包括在那裏討論的JsonValueProviderFactory。然後,你就可以對其進行註冊後,JSON請求發送到您的ASP.NET MVC 2控制器操作:

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    ValueProviderFactories.Factories.Add(new JsonValueProviderFactory()); 
} 

發送它指示要發送一個JSON請求粘結劑的請求時,還要注意contentType: 'application/json; charset=utf-8'設置。

+0

請看看更新後的問題。這是工作很好回來..但現在搞砸了.. – Saravanan 2011-12-27 09:59:26

+1

@saravanan,不,這是不可能的,曾經在ASP.NET MVC 2應用程序工作。開箱即用,它不支持JSON請求。您在您的AJAX請求中使用了'JSON.stringify',它將對象序列化爲JSON字符串。也許在你沒有這個JSON.stringify調用之前? – 2011-12-27 10:01:13

+0

將此添加到ajax請求修復了問題。 'contentType:'application/json;字符集= UTF-8''。謝謝Darin Dimitrov。 – Saravanan 2011-12-27 10:01:18