【发布时间】:2014-09-30 21:22:14
【问题描述】:
我有两个控制器HomeController和MediaController。
当我提交表单时,会从 HomeController 调用操作名称 EmployeeDetails。
[Authorize]
[HttpPost]
public ActionResult EmployeeDetails(Employee Employee, string Command)
{
MediaController MediaController = new Controllers.MediaController();
Employee.EmployeeModel.newImageId=MediaController.ProcessUploadedImage(FileUpload);
}
我从这个方法中调用ProcessUploadedImage 方法,它位于MediaContoller 中
public Guid ProcessUploadedImage(FileUpload uploadedFileMeta)
{
Session["WorkingImageExtension"]=uploadedFileMeta.Filename.Substring(uploadedFileMeta.Filename.LastIndexOf('.')).ToLower();
}
这里的问题是,在ProcessUploadedImage 方法中,我将会话值设为空,这意味着当我在快速观看中检查会话的值时,它显示为空。当我将光标悬停在会话上时,它在调试模式下显示为空。
所以我的问题是,我可以在跨控制器方法访问期间访问会话吗?
【问题讨论】:
-
会话中可能没有任何内容。试试
Session["WorkingImageExtension"]= "some default value"。然后检查您是否可以在另一个控件中访问它。是的,您可以跨控制器访问会话。只有当你关闭浏览器时它才会被销毁 -
但在我的情况下,当我将光标悬停在会话而不是 Session["WorkingImageExtension"] 整体上时,它给了我 null 并给我一个错误,即对象引用未设置为对象的实例。
-
你确定是空的会话对象而不是
uploadedFileMeta吗?为什么不试试dotnetdreamer给出的建议,给Session["WorkingImageExtension"]赋值一个字符串,然后单步执行。 -
你也可以试试
If条件。即if(Session["WorkingImageExtension"] !=null) { // session isn't null } else { //session is null } -
并确保调试代码
标签: asp.net-mvc asp.net-mvc-3 session