2014-05-11 77 views
0

我有這個代碼發佈json到控制器。MVC控制器後json不工作

問題是憑證對象不會使用發佈的值填充。

如何更改此代碼以使其正常工作?

我在Fiddler看到請求被正確發佈。

[HttpPost] 
public JsonResult Authenticate(CredentialsModel credentials) 
{ 
    return Json(credentials); 
} 

[DataContract] 
public class CredentialsModel 
{ 
    [DataMember(Name = "user")] 
    public string User; 
    [DataMember(Name = "pass")] 
    public string Pass; 
} 


$.ajax({ 
    type: "POST", 
    url: "/login/authenticate", 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    data: '{"user":' + JSON.stringify($('#username').val()) + ',"uass":' + JSON.stringify($('#userpass').val()) + '}', 
    dataType: "json", 
    timeout: 100, 
    success: function (msg) { 

    }, 
    complete: function (jqXHR, status) { 
     if (status == 'success' || status == 'notmodified') { 


      var obj = jQuery.parseJSON(jqXHR.responseText); 

     } 
    }, 
    error: function (req, status, error) { 

    } 
}); 

回答

3

默認的MVC模型綁定只與性工作。您的CredentialsModel正在使用字段。嘗試將它們改爲屬性。您也可以刪除註釋。另外,正如Sahib指出的那樣,您可以創建一個Javascript對象,然後對其進行字符串化,而不是將每個字符串串聯起來。雖然這在這種情況下似乎不成問題。

data: JSON.stringify({ 
    User: $('#username').val(), 
    Pass: $('#userpass').val() 
}) 
+0

不知道有關propery的事情。感謝指出。你可以給我一個鏈接,在那裏我可以研究如何實際工作的細節? –

0

嘗試chaning你的數據是這樣的:

$.ajax({ 
    ................. 
    //notice the 'U' and 'P'. I have changed those to exactly match with your model field. 
    data: JSON.stringify({User: $('#username').val(),Pass: $('#userpass').val()}), 
    ................. 
}); 
+0

沒有工作... – user3077725

+0

@ user3077725嘗試刪除所有註釋只是爲了看看是否能創造我加入他們,因爲有「是」一個問題的任何問題 –

+0

。他們沒有任何影響 – user3077725