Передача данных для просмотра главных страниц на основе имени пользователя - PullRequest
0 голосов
/ 14 апреля 2011

У меня проблема с моим приложением mvc, mvc 3, использующим движок spark view.Я хочу связать выпадающий список, который прикреплен к базе application.spark (главная страница) на HttpContext.User.Identity.проблема заключается в том ... где я должен разместить ViewData, которые содержат SelectList, как мой источник данных DropDownList?Этот раскрывающийся список будет доступен на всех страницах моего приложения.есть статья об этом: http://www.asp.net/mvc/tutorials/passing-data-to-view-master-pages-cs,, но это не решило мою проблему, так как я не могу получить User.Identity от ApplicationController.

Есть идеи?

1 Ответ

1 голос
/ 14 апреля 2011
  • Вы можете создать свой собственный базовый контроллер и переопределить метод OnActionExecuting.

    protected override void OnActionExecuting(ActionExecutingContextfilterContext)
    {
        var userName = User.Identity.Name;
        ViewData["MySelectList"] = new SelectList(AllUsers, "Id", "UserName", userName );
    }
    
  • Вы можете создать фильтр действий и переопределите метод OnActionExecuting - затем примените этот фильтр к каждому контроллеру.

     public class MyCustomActionFilterAttribute : ActionFilterAttribute
     {
       public override void OnActionExecuting(ActionExecutingContext filterContext)
       {
         var userName =  filterContext.RequestContext.HttpContext.User.Identity.Name;
          filterContext.Controller.ViewData["MySelectList"] = new SelectList(AllUsers, "Id", "UserName", userName);
       }
     }
    
    [MyCustomActionFilter]
    public class HomeController:Controller
    {....
    }
    
...