使用字符串参数重定向到不同的JsonResult

时间:2013-06-28 01:07:48

标签: asp.net json asp.net-mvc-3 controller

尝试在这里做一些动态的事情。大多数对此操作的调用都会为actionName传递一个“none”参数,但是,偶尔会有一个调用传递我想要返回数据的操作的名称,而不是这个。它是动态的原因是它从数据库读取值,因此调用它的函数可能有或没有actionName覆盖。我需要能够使用actionName参数重定向到另一个JsonResult作为要重定向到的JsonResult的名称。有没有办法按名称调用另一个JsonResult,然后将结果传回这个函数?

public JsonResult GetBadgeValues(int badgeId, string actionName) {
    if (actionName != "none") {
        return actionName;
    }

    ...
}

1 个答案:

答案 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路径。