簡體   English   中英

ASP.NET MVC 3 JSON ModelBinder無法正常工作

[英]ASP.NET MVC 3 JSON ModelBinders not working

我正在嘗試在MVC 3中使用新的JSON ModelBinders,Scott Guthrie在他的博客中談到了這一點。

我的例子與他正在使用的例子非常相似。 我有一個模型有3個值,我試圖POST到服務器。

該模型如下所示:

public class CommentViewModel
{
    public string Product { get; set; }
    public string Text { get; set; }
    public string Author { get; set; }
}

JavaScript看起來像這樣:

$("#addComment").click(function () {

    var comment = {
        Product: $("#productName").html(),
        Text: $("#comment").val(),
        Author: $("#author").val()
    };

    alert("value=" + JSON.stringify(comment));

    $.ajax({                                                    
        url: "/Home/Add",                                       
        type: "POST",                                           
        data: JSON.stringify(comment),                          
        datatype: "json",                                       
        contentType: "application/json; charset=utf-8",         
        success: function (data) {                              
            alert(data);                                        
        }                                                       
    });                                                         
});   

控制器操作如下所示:

[HttpPost]
public ActionResult Add(CommentViewModel comment)
{
      // ...
}

我得到的警報(JavaScript帖子中的那個)給了我這樣的東西:

value={"Product":"Classic","Text":"the comment","Author":"me"}

我期望模型中的屬性填充在服務器上,但所有屬性都為null。 我正在使用ASP.NET MVC 3 Preview 1。

我想這可能是因為ASP.NET MVC 3 Preview 1沒有按預期自動注冊JsonValueProviderFactory

將以下片段放在Global.asax中以手動注冊它,它應該解決您的問題:

ValueProviderFactories.Factories.Add(new JsonValueProviderFactory())

很確定你需要改變以下幾行

$.ajax({                                                    
    url: "/Home/Add",
    type: "POST",
    data: comment,
    datatype: "json",
    success: function (data) {
        alert(data);
    }
});

注意我已經刪除了stringify和contenttype

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM