【发布时间】:2020-12-21 15:04:01
【问题描述】:
我正在调用一个返回 JSON 字符串的 API,如下所示
{"ItemNumber":"5542","MD5Key":"md5key"}
我想做的是在我的视图中显示这些值,这就是我目前所拥有的。错误是我的代码返回了一个不存在的视图,并且我的 Model MD5 字符串为空,只是我直接填写的值是可以的(ItemNumber,File)。
型号
public class FileUpload
{
[Required(ErrorMessage = "Item Number is required")]
public int ItemNumber { get; set; }
public byte[] File { get; set; }
public string MD5Key { get; set; }
}
控制器:
[HttpPost]
public async Task<IActionResult> Upsert([FromForm] FileUpload obj)
{
if (ModelState.IsValid)
{
var files = HttpContext.Request.Form.Files;
if (files.Count > 0)
{
byte[] p1 = null;
using (var fs1 = files[0].OpenReadStream())
{
using (var ms1 = new MemoryStream())
{
fs1.CopyTo(ms1);
p1 = ms1.ToArray();
}
}
obj.File = p1;
obj.ItemNumber = 5542;
}
}
await _cuRepo.CreateAsync("https://apiurl/method", obj.File, obj.ItemNumber);
return View(obj);
//This is returning a view Upsert, and obj.File, obj.ItemNumber are ok, just MD5 is null.
}
Repository(主要问题应该是这个)
public async Task<bool> CreateAsync(string url, byte[] file, int number)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("header", "aaaaaa");
using (var content =
new MultipartFormDataContent("Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture)))
{
content.Add(new StringContent(number.ToString()), "ItemNumber");
content.Add(new StreamContent(new MemoryStream(file)), "File", "filename.txt");
using (var message = await client.PostAsync(url, content))
{
var input = await message.Content.ReadAsStringAsync();
//input has the JSON string
if (input != null)
return true;
else
return false;
}
}
}
}
发布后我可以做些什么来返回我的视图并使用 API 调用结果填充我的模型?
【问题讨论】:
-
所以 'apiurl/method' 返回这个 {"ItemNumber":"5542","MD5Key":"md5key"} 因此 md5 有价值返回给你?所以你想得到那个 md5 值并从这个终点返回?或者您想在代码中计算 md5 值。
-
@GonzalesGokhan apiurl/method 正在返回该 JSON,之后我想做的是将这些值设置为我的模型并将该模型返回到我的视图以在表单控件中显示结果跨度>
标签: c# asp.net-mvc asp.net-core razor