#c# #jquery #asp.net-mvc #asp.net-mvc-4
#c# #jquery #asp.net-mvc #asp.net-mvc-4
Вопрос:
Я разместил данные, используя метод $ .ajax из представления.Я не получаю опубликованные данные в контроллере Я пробовал по-разному получать данные, но безуспешно. Вот мой опубликованный код
$.ajax({
url: "/Groupage/UpdateAddresses",
type: "POST",
contentType: "JSON/Application",
data: JSON.stringify(sr)
});
[HttpPost]
public void UpdateAddresses(IEnumerable<GroupageAddress> addresses,FormCollection coll)
{
//saving data in db
var list = Request.QueryString.Cast<GroupageAddress>();
var list1 = Request.QueryString.Cast<IEnumerable<GroupageAddress>>();
//getting null for addresses parameter
//Used request
}
вот свойства класса группового адреса
public class GroupageAddress
{
[Key]
public int Id { get; set; }
[Required]
[Display(Name = "Transport Job Id")]
public int GroupageJobId { get; set; }
public int TransportJobId { get; set; }
//Company name is not required
[Display(Name = "Company Name")]
public string CompanyName { get; set; }
[Required]
[Display(Name = "Address1")]
public string Address1 { get; set; }
[Display(Name = "Address2")]
public string Address2 { get; set; }
[Required]
[Display(Name = "City")]
public string City { get; set; }
[Required]
[Display(Name = "County")]
public string County { get; set; }
[Required]
[Display(Name = "Post Code")]
public string PostCode { get; set; }
[Required]
[Display(Name = "Country")]
public int CountryId { get; set; }
[Required]
[Display(Name = "Global Transport Job Address Type Id")]
public int GlobalTransportJobAddressTypeId { get; set; }
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Date { get; set; }
[Display(Name = "Time From")]
public DateTime? TimeFrom { get; set; }
[Display(Name = "Time To")]
public DateTime? TimeTo { get; set; }
[Display(Name = "Actual Time")]
public DateTime? ActualTime { get; set; }
public int GroupageAddressSequenceId { get; set; }
[Display(Name = "Is Active")]
public bool IsActive { get; set; }
[ScriptIgnore(ApplyToOverrides = true)]
public virtual GroupageJob GroupageJob { get; set; }
}
вот опубликованные данные формы
Комментарии:
1. Каков ContentType запроса? Каково определение класса GroupageAddress?
2. тип содержимого — application / x-www-form-urlencoded; кодировка = UTF-8, я опубликовал сериализованные данные списка класса GroupageAddress, я редактирую список объекта GroupageAddress.
3. И где находится код из самого представления?
4. Похоже, что ваши данные в формате JSON, но вы говорите MVC, что это данные формы. Либо установите тип содержимого на
JSON/Application; charset=UTF-8
или правильно отформатируйте данные наapplication/x-www-form-urlencoded; charset=UTF-8
5. Правильный тип содержимого для данных json
application/json
Ответ №1:
Я заметил, что в зависимости от типа контента mvc будет реагировать на данные. Я использовал только $.post(«/ Groupage / UpdateAddresses», JSON.stringify(sr)), но он отправил тип содержимого как application / x-www-form-urlencoded; charset = UTF-8 Когда я использовал with, как показано ниже, тип содержимого изменен на «Application JSON»
$.ajax({
url: "/Groupage/UpdateAddresses",
type: "POST",
contentType: "Application/JSON",
data: JSON.stringify(sr)
});
Получил данные, десериализованные в виде объекта C # в качестве параметра в методе.