【发布时间】:2010-08-04 17:10:30
【问题描述】:
为了避免必须在每个控制器中的每个视图之前传递进入我网站母版页的数据,我创建了一个 ApplicationController,它在其构造函数上设置数据......这种方法的问题是其中一个我必须传递的视图数据是当前登录用户的个人资料图像的 URL。
[Authorize(Roles = "Administrator")]
public abstract class AdministratorController : Controller
{
private IPortalAdministratorServices _servicioPortalAdministrator;
public AdministratorController()
{
_servicioPortalAdministrator = new PortalAdministratorServices();
ViewData["associates"] = _servicioPortalAdministrator.getAssociates();
ViewData["picture"] = _servicioPortalAdministrator.GetPic();
public AdministratorController(IPortalAdministratorServices service)
{
_servicioPortalAdministrator = service;
}
}
所以我的公司控制器继承自 AdministratorController 现在不必在每次视图调用时设置所有数据。
[Authorize(Roles = "Administrator")]
public class CompaniesController : AdministratorController
{
private ICompaniasServices _service;
public CompaniesController()
{
_service = new CompaniasServices(new ModelStateWrapper(this.ModelState));
}
public CompaniesController(ICompaniasServices service)
{
_service = service;
}
问题是这样的:
当我尝试在没有实际登录的情况下手动访问公司控制器时,GetPic() 方法实际上无法获取图片 URL,因为没有人登录.. 尽管有Authorize 属性....所以现在,即使在登录 ViewData 后,图片 URL 也已永久设置为“unknown.png”
其中一些代码不是我的。我刚刚发现了这个错误,但不知道如何修复它。
【问题讨论】:
标签: asp.net asp.net-mvc master-pages viewdata