Asp.net mvc 4 如何在asp.net core 2.2上调用另一个操作结果返回json?

Asp.net mvc 4 如何在asp.net core 2.2上调用另一个操作结果返回json?,asp.net-mvc-4,asp.net-core,c#-7.0,Asp.net Mvc 4,Asp.net Core,C# 7.0,问题 如何对另一个操作结果调用操作结果 我有两个动作结果假设和动作结果获取分支 我可以在ActionResult postlogin中调用ActionResult GetBranchs吗 [HttpPost(Contracts.ApiRoutes.Login.UserLogin)] public IActionResult PostUserLogins([FromBody] Users user) { if (LoginStatus == 1)

问题

如何对另一个操作结果调用操作结果

我有两个动作结果假设和动作结果获取分支

我可以在ActionResult postlogin中调用ActionResult GetBranchs吗

[HttpPost(Contracts.ApiRoutes.Login.UserLogin)]
        public IActionResult PostUserLogins([FromBody] Users user)
        {
if (LoginStatus == 1)
            {
                // for Invalid Username Or password
                dynamic request_status = new JObject();
                request_status.Status = "failed";
                request_status.Code = LoginStatus;
                request_status.Message = errorMessage;
                request_status.Branches = ????? How to call GetBranches Action;
               // call action result to get  GetBranches(Users user) as json;
                JsonResults = "request_status" + JsonConvert.SerializeObject(request_status);


        }

        }
 [HttpGet(Contracts.ApiRoutes.Login.GetBranches)]
        public IActionResult GetBranches([FromRoute] string UserId)
        {


 List<Branches> branchesList = new List<Branches>();
                for (int i = 0; i < dtBranches.Rows.Count; i++)
                {
                    Branches branch = new Branches();
                    branch.BranchCode = Utilities.ObjectConverter.ConvertToInteger(dtBranches.Rows[i]["BranchCode"]);
                    branch.BranchName = Utilities.ObjectConverter.ConvertToString(dtBranches.Rows[i]["BranchAraName"]);
                    branchesList.Add(branch);

            }
JsonResults = "request_status" + JsonConvert.SerializeObject(branchesList);
return Ok(JsonResults);
        }
[HttpPost(Contracts.apirouts.Login.UserLogin)]
公共IActionResult假设登录([FromBody]用户)
{
if(LoginStatus==1)
{
//用户名或密码无效
动态请求_状态=新作业对象();
请求\u status.status=“失败”;
请求_status.Code=登录状态;
请求_status.Message=错误消息;
请求_status.branchs=???如何调用GetBranchs操作;
//调用action result以json形式获取GetBranchs(用户);
JsonResults=“request\u status”+JsonConvert.serialized对象(request\u status);
}
}
[HttpGet(Contracts.apirouts.Login.getBranchs)]
public IActionResult GetBranchs([FromRoute]字符串用户ID)
{
列表分支列表=新列表();
对于(int i=0;i
无论你能不能,你都不应该

最简单的方法是将该逻辑提取到另一个方法:

[HttpPost(Contracts.ApiRoutes.Login.UserLogin)]
public IActionResult PostUserLogins([FromBody] Users user)
{
    if (LoginStatus == 1)
    {
        // for Invalid Username Or password
        dynamic request_status = new JObject();
        request_status.Status = "failed";
        request_status.Code = LoginStatus;
        request_status.Message = errorMessage;
        request_status.Branches = GetBrancesImpl();
        JsonResults = "request_status" + JsonConvert.SerializeObject(request_status);
    }
}
[HttpGet(Contracts.ApiRoutes.Login.GetBranches)]
public IActionResult GetBranches([FromRoute] string UserId)
{
    JsonResults = "request_status" + JsonConvert.SerializeObject(GetBrancesImpl());
    return Ok(JsonResults);
}
private IEnumerable<Branches> GetBrancesImpl()
{
    from branch in dtBranches.Rows
    select new new Branches
        {
            BranchCode = Utilities.ObjectConverter.ConvertToInteger(dtBranches.Rows[i]["BranchCode"]),
            BranchName = Utilities.ObjectConverter.ConvertToString(dtBranches.Rows[i]["BranchAraName"]),
        };
}
[HttpPost(Contracts.apirouts.Login.UserLogin)]
公共IActionResult假设登录([FromBody]用户)
{
if(LoginStatus==1)
{
//用户名或密码无效
动态请求_状态=新作业对象();
请求\u status.status=“失败”;
请求_status.Code=登录状态;
请求_status.Message=错误消息;
request_status.branchs=getBranchesImpl();
JsonResults=“request\u status”+JsonConvert.serialized对象(request\u status);
}
}
[HttpGet(Contracts.apirouts.Login.getBranchs)]
public IActionResult GetBranchs([FromRoute]字符串用户ID)
{
JsonResults=“request_status”+JsonConvert.SerializeObject(getBranceImpl());
返回Ok(JsonResults);
}
私有IEnumerable getBranceImpl()
{
从DTBranchs.Rows中的分支
选择新分支
{
BranchCode=Utilities.ObjectConverter.ConvertToInteger(dtBranchs.Rows[i][“BranchCode”]),
BranchName=Utilities.ObjectConverter.ConvertToString(dtBranchs.Rows[i][“BranchAraName]”),
};
}

最好将此逻辑移动到一个服务类中,该服务类保存该逻辑并且可以轻松测试。

如果它们位于同一个控制器中,您可以直接在
posturelogins
中调用它,如:

public IActionResult PostUserLogins([FromBody] Users user)
    {
        //other logic

        var result = GetBranches("myUserID") as OkObjectResult;

        var json = result.Value.ToString().Substring(14);//remove the first "request_status" in the string to make it a valid json  be deserialized later

        request_status.Branches = JsonConvert.DeserializeObject<List<Branch>>(json);//get the Branch list

        JsonResults = "request_status" + JsonConvert.SerializeObject(request_status);

    }
public IActionResult positionserlogins([FromBody]用户)
{
//其他逻辑
var result=getbranchs(“myUserID”)作为OkObjectResult;
var json=result.Value.ToString().Substring(14);//删除字符串中的第一个“request_status”,使其成为一个有效的json,以便以后反序列化
request_status.branchs=JsonConvert.DeserializeObject(json);//获取分支列表
JsonResults=“request\u status”+JsonConvert.serialized对象(request\u status);
}

不要这样做。在单独的方法中提取代码,并从两个操作中调用它