1
我有一个名为BaseController
的控制器,它由所有其他控制器继承。我有一个BaseController
的构造函数,我在这里根据从会话中选择的变量patId进行一些计算,并在此计算的基础上允许用户执行一些操作。将操作方法的参数存入控制器的构造函数
但是有一个控制器MyController
其操作首次将此变量从另一个应用程序模块接收到此模块中,所以直到此时它才被设置到会话中。
public ActionResult MyAction(string patId)
{
// First time patId is been set into session
}
因此,我的BaseController
计算出现此错误。有没有一种方法可以将这个变量值写入BaseController
的构造函数中。这样我可以检查会话值是否为空,然后检查此参数并设置会话。
请提出建议,如果我可以做到这一点,或者我可以从任何其他方式解决我的问题。
只用控制器构造函数是不可能的。难道你不能只检查会话中的值是否可用,如果它不停止计算?另一种选择是拦截所有传入的请求,并在需要时从它们中获取值,然后将其发送到控制器,请参阅[本主题](http://stackoverflow.com/q/11726848/728795)以获取想法 – Andrei
谢谢@Andrei看起来这会有所帮助。我会尝试选择第二个选项,并会尝试一下,如果这将有助于我 – prashant
@Andrei,如果我使用ActionFilter拦截请求,但控制器的构造函数将首先被调用,而不是FilterAttribute。 – prashant