как опубликовать множественные данные с помощью публикации в формате json?

#jquery #asp.net-mvc #json

#jquery #asp.net-mvc #json

Вопрос:

 var post = { "ID":1 };

var step = [1,2,3,4,5];

post.step = step;

console.log(post)

$.ajax({
    url:'rss/test',
    type:'POST',
    data:post
})
  

  public JsonResult Test(int ID, IEnumerable<string> step)
 {
     return Json(true);
 }
  

Я хочу опубликовать их с помощью JSON, как я могу это сделать? Когда я попытался это сделать, я обнаружил, что это не сработало. Шаг не выполнен (или post)

обновление: после установки его в

 var post  = {
"ID":1,
step:[{'Name':'first'},{'Name':'second'}]
}

$.post("/rss/test",post,function(){
});

public JsonResult Test(int ID, IEnumerable<string> step)
        {
            return Json(true);
        }
  

я чувствую, что это работа, но я получил результат

 step
Count = 2
    [0]: null
    [1]: null
  

в немедленном окне.

итак, я надеюсь, что я иду в правильном направлении, но обе вещи равны нулю. теперь кто-нибудь может помочь мне заставить их работать.

Спасибо

Ответ №1:

Типы данных на сервере не соответствуют объекту, который вы отправляете от своего клиента. Попробуйте это.

 public class Post
{
    public int ID { get; set; }
    public IEnumerable<string> Step { get; set; } 
}
  

Затем в вашем контроллере

 [HttpPost]
public JsonResult Test(Post post)
{

}
  

Вы должны проверить это, хотя и не компилировали его.

Чтобы опубликовать данные, вы должны правильно установить тип данных:

 $.ajax({
  url:'rss/test',
  type:'POST',
  dataType: "json",
  contentType: "application/json",
  data:post
})
  

Комментарии:

1. В качестве объекта JS передаются свойства, привязанные к параметрам действия. Ваш подход тоже сработает 🙂

Ответ №2:

Попробуйте добавить traditional параметр

 $.ajax({
    url:'rss/test',
    type:'POST',
    data:post,
    traditional: true
})