Хорошо, я нашел ответ. Чтобы сохранить файл и данные формы, я не анализирую модель. Я просто отправляю данные из postmant, используя данные формы, а значение - данные Json. Поэтому я прочитал запрос ReadAsMultipartAsync и получил данные Json, а затем опустошил JSON. После этого мы можем сохранить данные.
Вот как я отправляю данные из почтальона
Postmant
и это код
public async Task<IHttpActionResult> PostArPumPd()
{
try
{
var multiFormDataStreamProvider = new MultiFileUploadProvider(Constants.MEDIA_PATH);
var readToProvider = await Request.Content.ReadAsMultipartAsync(multiFormDataStreamProvider);
// Get Json Data and Deserialize it
var json = await readToProvider.Contents[0].ReadAsStringAsync();
tx_arPumPd a = JsonConvert.DeserializeObject<tx_arPumPd>(json);
// Set mod and file name for FileHelper classl
var mod = "PP";
var newFileName = mod + "_" + doc ;
tx_arPumPd arpumpds = new tx_arPumPd()
{
doc_no = doc,
doc_date = DateTime.Now,
descs = a.descs,
currency_code = a.currency_code,
amount = a.amount,
employee_code = a.employee_code,
head_code = a.head_code,
company_code = a.company_code,
created_by = a.emp_code,
created_date = DateTime.Now
};
db.tx_arPumPd.Add(arpumpds);
var dtl = a.tx_arPumPdDtl;
foreach (var item in dtl)
{
item.doc_no = doc;
item.bg_is_ok = true;
item.bg_approved = true;
item.bg_app_date = DateTime.Now;
item.created_by = a.emp_Code;
item.created_date = DateTime.Now;
db.tx_arPumPdDtl.Add(item);
}
try
{
await FileHelper.Upload(multiFormDataStreamProvider, mod, newFileName);
db.SaveChanges();
return Content(HttpStatusCode.Created, "Data was save");
}
catch (Exception ex)
{
return Content(HttpStatusCode.BadRequest, ex);
}
}
catch (Exception ex)
{
return Content(HttpStatusCode.BadRequest, ex);
}
}
Если у кого-то есть лучший способ сделать это, я все равно очень рад узнать об этом.
Спасибо.