C# 在没有返回语句的情况下从另一个操作调用操作

C# 在没有返回语句的情况下从另一个操作调用操作,c#,asp.net-mvc,actionmethod,C#,Asp.net Mvc,Actionmethod,这是我的控制器类的一部分: if (ds.Tables.Count > 1) { if (ds.Tables[0].Rows.Count > 0) { dt = ds.Tables[0]; dr = dt.Rows[0]; TempData["AgentId"] = dr[0].ToString(); TempData["AgentCode"] = dr[1].ToString();

这是我的控制器类的一部分:

if (ds.Tables.Count > 1)
{
    if (ds.Tables[0].Rows.Count > 0)
    {  
        dt = ds.Tables[0];
        dr = dt.Rows[0];

        TempData["AgentId"] = dr[0].ToString();
        TempData["AgentCode"] = dr[1].ToString();
        TempData["CenterName"] = dr[2].ToString();
        TempData["LevelName"] = dr[3].ToString();

        Session["AgentId"] = dr[0].ToString();
        Session["LogInSession"] = SessionId;

        return RedirectToAction("DashBoard", this.View(new AgentDetails { AgentId = Session["AgentId"].ToString() }));
        //return this.View("DashBoard", new AgentDetails { AgentId = Session["AgentId"].ToString()});
    }

我想分别传递这个参数和调用这个action方法。这可能吗?

动作只是一个函数。您可以像调用任何其他函数一样调用它

var result = Dashboard();
if(result.xxxx) // do whatever
return View(new AgentDetails { AgentId = Session["AgentId"].ToString() });

如果这就是您想要做的,那么为什么不将
仪表板
代码重构成一个可以重用的方法呢?

一个动作就是一个函数。您可以像调用任何其他函数一样调用它

var result = Dashboard();
if(result.xxxx) // do whatever
return View(new AgentDetails { AgentId = Session["AgentId"].ToString() });

如果这就是您想要做的,那么为什么不将
仪表板
代码重构成一个可以重用的方法呢?

是的,实际上我想做和您建议的一样的事情。我正在将此参数发送到布局视图,在这种情况下,操作将导致不执行它,而只是渲染视图。是的,实际上我希望执行与您建议的相同的操作。我将此参数发送到布局视图,在这种情况下,操作将导致不执行它,而只是呈现视图。那么,您遇到了什么问题?为什么要使用
return View()
而不是
return RedirectToAction()
?@StephenMuecke我正在将值发送到布局视图,因此在此过程中它不会呈现
@Model.AgentId
。因此,我尝试使用
returnview()
,并希望调用该操作方法,以便将我的数据传递给该视图。当然,它是这样做的(如果您已经初始化了一个模型,并根据传递给它的
AgentId
参数的值设置了它的属性。但是,您到底为什么要将一个复杂对象传递给GET方法,比如(如果
AgentDetails
的任何属性都是复杂对象或集合,那么它将失败。它应该是
return RedirectToAction)(“DashBoard”,new{AgentId=Session[“AgentId”]});
它重定向到
公共操作结果DashBoard(int-AgentId)
@StephenMuecke-yep我知道了。我要试试这个。谢谢你有什么问题吗?你为什么要使用
返回视图()
而不是
返回重定向到操作()
?@StephenMuecke我将值发送到布局视图,因此在此过程中,它不会呈现
@Model.AgentId
。因此我尝试使用
返回视图()
,并希望调用该操作方法,以便将我的数据传递到该视图。当然会(如果您已经初始化了一个模型,并根据传递给它的
AgentId
参数的值设置了它的属性。但是,您到底为什么要将一个复杂对象传递给GET方法,例如(如果
AgentDetails
的任何属性都是复杂对象或集合,它将失败。它应该是
返回重定向到操作()DashBoard“,new{AgentId=Session[“AgentId”]});
它重定向到
公共操作结果DashBoard(int-AgentId)
@StephenMuecke是的,我知道了。要试试这个。谢谢