#class #model-view-controller #subclass #form-data
#класс #модель-вид-контроллер #подкласс #форма-данные
Вопрос:
У меня 2 класса. И я использую класс firts в другом классе.
public class Adres { public int? ID { get; set; } public string Sehir { get; set; } public string Ilce { get; set; } public string Mahalle { get; set; } public string Sokak { get; set; } } public class User { public int? ID { get; set; } public string UserName { get; set; } public string Password { get; set; } public Adres UserAdres { get; set; } }
У меня есть эта функция в контроллере
public ActionResult Kaydet(Users.User prm_query) { int? ID = prm_query.ID; string UserName = prm_query.UserName; string Sehir = prm_query.UserAdres.Sehir; ..... }
Когда я публикую данные С помощью jQuery, я использую этот код, и он хорошо работает.
$.post("/Users/Kaydet", { ID: 1, UserName: 'Emre', Password: '112233', UserAdres: { ID: 1, Sehir: 'Istanbul', Ilce: 'Kadikoy', Mahalle: 'Kemal', Sokak: 'Yok' } }, function (Result) { // ..... });
Но я хочу отправить эти данные с помощью FormData, и я пытаюсь это сделать, но это не работает.
var formdata = new FormData(); formdata.append('ID', 1); formdata.append('UserName', 'Emre'); formdata.append('Password', '112233'); formdata.append('UserAdres', { ID: 1, Sehir: 'Istanbul', Ilce: 'Kadikoy', Mahalle: 'Kemal', Sokak: 'Yok' }); $.ajax({ type: 'POST', url: '/Users/Kaydet', dataType: 'json', processData: false, contentType: false, data: formdata }).done(function (Result) { // ... });
Когда я запускаю этот код, в имени пользователя контроллера вводится пароль, но имя пользователя всегда равно нулю. Как я могу опубликовать этот подкласс с помощью FormData?
Ответ №1:
я понял, как это сделать. Если я напишу его следующим образом, он будет легко соответствовать на стороне контроллера. но я не смог решить еще одну проблему, о которой написал ниже
formdata.append('UserAdres.ID', 1).val()); formdata.append('UserAdres.Sehir', 'Istanbul').val()); formdata.append('UserAdres.Ilce', 'Kadikoy').val());
но если подкласс представляет собой список, как показано ниже, я не смог найти, как добавить его в данные формы
public class User { public int? ID { get; set; } public string UserName { get; set; } public string Password { get; set; } public Listlt;Adresgt; UserAdres { get; set; } }
Я попробовал это, но это не сработало, это не соответствовало на стороне контроллера
$.each($('#cmb_modal_user_citys').val(), function (i, Item) { formdata.append('UserAdres.ID', i).val()); formdata.append('UserAdres.Sehir', 'Sehir-' i).val()); formdata.append('UserAdres.Ilce', 'Ilce-' i).val()); });