FormUrlEncodedContent с объектом LIST и другими смешанными типами данных для метода POST - PullRequest
0 голосов
/ 03 мая 2018

метод POST

SaveData([FromBody]MyDetails myDetails)

MyDetails - это класс с

public int Id;
public int LocationId;
public List<Employee> Employee;
public bool Status;

Сотрудник - класс с

public int EmployeeId;
public Name EmployeeName;



var values = new Dictionary<string, string>
                        {
                            {"Id",myDetails.Id.ToString()},
                            {"LocationId", myDetails.LocationId.ToString()},
                            {"Status", myDetails.Status.ToString()},
                 {"Employee", myDetails.Employee.ToString()} -- How do i send List Employee part of FormURLEncodedContent, i know this is wrong, i am having hard time getting this to work?

                        };

var encodedContent = new FormUrlEncodedContent(values);
 var response = await client.PostAsync(url, encodedContent); //url points to POST method SaveData, which accepts MyDetails class object as parameter.

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

Я так и сделал. Вот мои данные класса

 public class AddTenantRequestdto
{
    public IFormFile TenantLogo { get; set; }    
    public string TenantTitle { get; set; } 
    public List<string> ApplicationName { get; set; }  
    public bool EnableOTP { get; set; }

}

Вот мой API

    public async Task Tenant_Create_Success(AddTenantRequestdto addTenantRequest)
            {
                HttpClient Client = new HttpClient();

                var formDictionary = new Dictionary<string, string>();


                formDictionary.Add("EnableOTP", JsonConvert.SerializeObject(addTenantRequest.EnableOTP));
                 formDictionary.Add("ApplicationName", JsonConvert.SerializeObject(addTenantRequest.ApplicationName));

                formDictionary.Add("TenantLogo", JsonConvert.SerializeObject(addTenantRequest.TenantLogo));           

                var formContent = new FormUrlEncodedContent(formDictionary);

                var response = await Client.PostAsync("http://localhost:61234/Tenants/CreateTenant", formContent);
                response.StatusCode.Should().Be(HttpStatusCode.OK);
            }

Это нормально работает для меня

0 голосов
/ 03 мая 2018

Сериализация класса objecto JSON

var content = JsonConvert.SerializeObject(myDetails); //myDetails is my class object.
var buffer = System.Text.Encoding.UTF8.GetBytes(content);
var byteContent = new ByteArrayContent(buffer);
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");   

 var response = await client.PostAsync(url, byteContent);

Дали верный результат.

...