2014-05-11 4 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 используют поля. Попробуйте изменить их свойства. Вы также можете удалить аннотации.

public class CredentialsModel 
{ 
    public string User { get; set; } 
    public string Pass { get; set; } 
} 

Кроме того, как отметил Сахиб, вы можете создать объект Javascript, а затем stringify его, а не stringifying каждого из них. Хотя это и не проблема в этом случае.

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

не знал о себе. Благодаря этому. Можете ли вы дать ссылку, где я могу подробно изучить, как это работает? –

0

Попробуйте чейнинга ваши данные, как это:

$.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

Смежные вопросы