尝试在这里做一些动态的事情。大多数对此操作的调用都会为actionName传递一个“none”参数,但是,偶尔会有一个调用传递我想要返回数据的操作的名称,而不是这个。它是动态的原因是它从数据库读取值,因此调用它的函数可能有或没有actionName覆盖。我需要能够使用actionName参数重定向到另一个JsonResult作为要重定向到的JsonResult的名称。有没有办法按名称调用另一个JsonResult,然后将结果传回这个函数?
public JsonResult GetBadgeValues(int badgeId, string actionName) {
if (actionName != "none") {
return actionName;
}
...
}
答案 0 :(得分:0)
这是一个冗长的答案,但应该有效:
Dictionary<string, Func<JsonResult>> nameToMethodDict =
new Dictionary<string, Func<string, JsonResult>>(){
{"name", otherMethod}
};
public JsonResult GetBadgeValues(int badgeId, string actionName) {
if (actionName != "none") {
return actionName;
}
else {
return nameToMethodDict[actionName]();
}
}
public JsonResult otherMethod() {
...
}
但是,我会重新考虑这种架构,因为如果你想根据数据库中的某些值返回不同的数据,那么它应该是存储过程中基于集合的逻辑,而不是这种愚蠢的字符串 - &gt;委托关系。另一方面,如果您只有5个或一些可数的actionName值,那么你应该真正使它们成为单独的MVC路径。