현재 사용자에게 특정한 키가 필요하고 마스터 페이지에있는 탐색 옵션이 필요합니다. 모범 사례에 대한 조언이 필요합니다.MVC에서 탐색 변수를 설정하는 방법 Masterpages
에서이 masterpage에서 왼쪽 탐색 메뉴에서 다음과 같은 링크가 '123'점포 ID 전류이다
http://www.example.com/manageShop/123
사용자는의 관리자입니다.
<li><%= Html.ActionLink<ShopController>(x => x.ManageShop((int)Session["ShopKey"]), "Manage")%></li>
나는 단지 세션에서 한 번 ShopKey을 설정해야로서이 좋은 아이디어라고 생각 : 나는
은 현재 내가이 효과에 뭔가를하려고 해요 masterpage이를 전달하는 방법이 필요 그것의 끝, 아래쪽은 당신이 열려있는 위치가 2 개의 탭 인 경우에 세션이 섞인 ㄴ다는 것을주의 된 iv이다.
<li><%= Html.ActionLink<ShopController>(x => x.ManageShop((int)ViewData["ShopKey"]), "Manage")%></li>
그러나 이것은 당신이 모든 컨트롤러의 모든 행동에을 ViewData 설정을 유지해야 의미
는 다른 방법이 시도. 어느 것이 끔찍한가.편집 : 나는 아래의 제안 유럽 연합 (EU)-GE-NE와 같은 필터에 alook 있었다,하지만 난 여전히 사방 ShopKey을 설정하는 문제를 가지고이 정말 내 문제를 해결 해달라고?
해결책은 무엇입니까?
public class UserKeyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Controller.ViewData["UserKey"] = UserKey;
}
}
및 컨트롤러 또는 컨트롤러의 행동에
[UserKey]
public class YourController : Controller
{
// or
public class YourController : Controller
{
[UserKey]
public ActionResult Index()
{
를 사용하거나 Controller.OnActionExecuting을 (사용) (또는 이것에 대한 기본 컨트롤러를 만들 :
컨트롤러가 기본 컨트롤러에서 파생되는 경우에는 끔찍하지 않습니다. 필요한 ViewData를 추가합니다. –
어떻게 예를 들어 주시겠습니까? 기초가 어떻게 도움이 될지 알아보십시오 – Dan