Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回要查看的API结果_C#_Asp.net Mvc_Asp.net Core_Razor - Fatal编程技术网

C# 返回要查看的API结果

C# 返回要查看的API结果,c#,asp.net-mvc,asp.net-core,razor,C#,Asp.net Mvc,Asp.net Core,Razor,我正在调用一个返回JSON字符串的API,如下所示 {"ItemNumber":"5542","MD5Key":"md5key"} 我想做的是在我的观点中展示这些价值观,这就是我目前所拥有的。错误在于,我的代码返回的视图不存在,并且我的模型MD5字符串为空,只是我直接填充的值是ok(ItemNumber,File) 模型 控制器: [HttpPost] public async Task<IActionRes

我正在调用一个返回JSON字符串的API,如下所示

{"ItemNumber":"5542","MD5Key":"md5key"}
我想做的是在我的观点中展示这些价值观,这就是我目前所拥有的。错误在于,我的代码返回的视图不存在,并且我的模型MD5字符串为空,只是我直接填充的值是ok(ItemNumber,File)

模型

控制器:

[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.
}
[HttpPost]
公共异步任务上传([FromForm]FileUpload obj)
{
if(ModelState.IsValid)
{
var files=HttpContext.Request.Form.files;
如果(files.Count>0)
{
字节[]p1=null;
使用(var fs1=files[0].OpenReadStream())
{
使用(var ms1=new MemoryStream())
{
fs1.CopyTo(ms1);
p1=ms1.ToArray();
}
}
obj.File=p1;
obj.ItemNumber=5542;
}
}
等待_cuRepo.CreateAsync(“https://apiurl/method“,obj.File,obj.ItemNumber);
返回视图(obj);
//这将返回一个视图Upsert,obj.File、obj.ItemNumber都正常,只是MD5为空。
}
存储库(主要问题应该是这个)

public async Task CreateAsync(字符串url,字节[]文件,整数)
{
使用(var client=new HttpClient())
{
client.DefaultRequestHeaders.Add(“header”、“aaaaaa”);
使用(var)内容=
新的MultipartFormDataContent(“上载--”+DateTime.Now.ToString(CultureInfo.InvariantCulture)))
{
添加(新的StringContent(number.ToString()),“ItemNumber”);
添加(新的StreamContent(新的MemoryStream(文件)),“file”,“filename.txt”);
使用(var message=wait client.PostAsync(url、内容))
{
var input=wait message.Content.ReadAsStringAsync();
//输入包含JSON字符串
如果(输入!=null)
返回true;
其他的
返回false;
}
}
}
}

在发布后,如何返回到视图并用API调用结果填充模型?

我将从API为Response对象创建一个新类。将用户输入返回到页面不是一个好主意。最好有自己的视图模型。(我使用Json.NET nuget包进行反序列化

public class FileUploadResponse
{
    public int ItemNumber { get; set; }
    public string MD5Key { get; set; }
}
然后将响应json反序列化为FileUploadResponse对象

FileUploadResponse fileUploadResponse = JsonConvert.DeserializeObject<FileUploadResponse>(input); 
您还必须更改方法签名

public async Task<FileUploadResponse> CreateAsync(string url, byte[] file, int number)

所以“”返回的是{“ItemNumber”:“5542”,“MD5Key”:“MD5Key”}因此md5有值正在返回给您?那么您想得到md5值并从此端磅返回吗?或者您想在代码中计算md5值。@Gonzalesgohan apiurl/method正在返回该JSON,之后我想做的是将这些值设置到我的模型,并将该模型返回到我的视图,以表单形式显示结果控件现在将值返回到视图,但是,返回视图(响应)将返回到不存在的视图Upsert。添加返回视图(“索引”,响应)时已修复现在它可以工作了,但是它在我的url中添加了/Upsert,有没有办法避免这种情况呢?只保留mypage.com/FileUpload而不是mypage.com/FileUpload/Upsert你不能用[HttpPost(“/FileUpload”)]覆盖路由吗?我想你的默认配置是{ControllerName}/{MethodName}。你可以阅读属性路由
FileUploadResponse fileUploadResponse = JsonConvert.DeserializeObject<FileUploadResponse>(input); 
return fileUploadResponse
public async Task<FileUploadResponse> CreateAsync(string url, byte[] file, int number)
var response=await _cuRepo.CreateAsync("https://apiurl/method", obj.File, obj.ItemNumber);
return View(response);