2015-12-16 2 views
0

мой класс;Как отправить параметры класса контроллеру

public class Disciplines 
{ 
    public int Id { get; set; } 

    public string Name { get; set; } 
} 

мой контроллер;

public void test (Disciplines discipline) 
{ 

} 

и с помощью ajax я хочу отправить параметры тестовому контроллеру.

мой javascript;

var disciplines = {Id:1, name:"white"}; 
      $.ajax({ 

       type: "POST", 
       url: "test", 
       data: { disciplines:disciplines }, 
       dataType: "Json", 
       success: function (response) { 
       }, 
       beforeSend: function() { 


    showIndicator(); 
      }, 
      error: onFailure, 

     }); 

Когда я отлаживаю его, параметры контроллера всегда равны нулю. Как я могу сделать это успешно. Большое спасибо.

+1

Вы пробовали данные: дисциплин, '? – Satpal

+0

У вас должно быть такое же имя параметра объекта, как «Id», «Name» –

+0

В вашем ajax вы пишете 'dataType:« Json »', но вы ожидаете «Дисциплины» - пользовательский объект. Вам нужно будет получить JSON и проанализировать его на свой объект вручную. – Rajesh

ответ

1

Проблема в том, что модель связующий будет ищу id и name в запросе, а не disciplines. Попробуйте следующее:

var disciplines = { 
    id: 1, 
    name: "white" 
}; 

$.ajax({ 
    type: "POST", 
    url: "test", 
    data: disciplines, 
    dataType: "json", 
    success: function (response) { 
    }, 
    beforeSend: function() { 
     showIndicator(); 
    }, 
    error: onFailure, 
}); 
1

Ваш код должен быть

var disciplines = {"Id":1, "Name":"white"}; 

$.ajax({ 

       type: "POST", 
       url: "test", 
       data: { disciplines:disciplines }, 
       dataType: "Json", 
       success: function (response) { 
       }, 
       beforeSend: function() { 


    showIndicator(); 
      }, 
      error: onFailure, 

     }); 

Контроллер

[HttpPost] 
public void test (Disciplines discipline) 
{ 

} 

должны иметь одинаковые имена параметров как в классе

+0

, пожалуйста, напишите причину для голосования. –

+0

Я бы предположил, что это связано с тем, что обматывание имен параметров в объекте в кавычках не имеет значения. Модельное связующее будет искать свойства 'Id' и' Name', а не 'disciplines'. –

+1

@RoryMcCrossan Их отличие от 'Name' и' name'. Это не является обязательным для имени параметра. –

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