目前我正在开发一个有管理员和客户端的项目。
管理员端使用DirectResult
执行任何与管理员相关的操作,而客户端使用JsonResult
呈现页面,我想使用相同的Controllers
。根据请求返回DirectResult
或JsonResult
的方法。
例如:
Admin
:Class1.Method()
- >应该返回DirectResult
Client
:Class1.Method()
- >应该返回JsonResult
,并使用Ajax
请求请求两个结果。
答案 0 :(得分:0)
由于C#的限制,不可能这样做。 类C#中的每个方法都必须具有唯一的方法签名,但签名中不会计算返回类型。
考虑使用不同的名称创建Ajax方法(因为这是客户端通常看不到的名称)。
约束(泛型)是not part of the method signature,所以除非你将不同的参数传递给你的方法,否则它会产生相同的结果,就像用不同的返回类型命名它们一样。
编辑:我误解了。如果DirectResult和JsonResult都继承自相同的基类型,则可以在响应中返回其中任何一个,转换为基类型。答案 1 :(得分:0)
在这个问题中回答了这个问题:StackOverFlow question。 在不返回常规对象的情况下执行此操作的另一种方法是为两种返回类型实现相同的祖先,并将其设置为返回类型。 或者使用空值返回Tuple。