2009-09-29 7 views
0

기본적으로 많은 RouteValueDictionary을받는 도우미를 작성하고 많은 링크를 반환합니다. 현재 경로 값 (예 : /Products/Details/3에서 /Products/Details/3에 대한 링크가 없어야 함)에 대한 링크를 건너 뛰고 다른 URL 매개 변수를 무시하고 싶습니다. 내가 생각할 수있는 어떤ASP.NET MVC의 현재 경로에 대한 링크를 건너 뛰거나 비활성화합니다.

가 있는지 확인하는 것입니다 대상 행동과 컨트롤러 이름이 현재 사람에 널거나 같은

  • ;

  • 서로 다른 목적지 경로 값이 정의되어 있고 그 반대의 경우도 마찬가지입니다.

더 좋은 방법이 있습니까?

편집 :

일부 컨텍스트 : 나는 많은 모델, 많은 컨트롤러, 많은 작업을해야합니다. 나는 어디서나 같은 물건을 반복해서 쓰는 아이디어가 마음에 들지 않으므로 일반적인 해결책을 코드화하기로 결정했다. 사용 권한 인식 아이콘 링크 (나는 힌트를 요청했다. here).

저는 PermissionAwareIconAction 클래스를 가지고 있습니다.이 클래스는 Icon, HasPermission() 메쏘드, URL을 얻기위한 델리게이트와 다른 것들을 가지고 있습니다. 물론, 코드가 다른 특정 작업을 추가,

CrudAction.CreateCrudActions<Vendors>(Permissions.CreateVendors, 
             Permissions.EditVendors, 
             Permissions.DetailsVendors, 
             Permissions.DeleteVendors); 

과 : Global.asax.cs 내부 나는 다음과 같은 코드로,이 모든 물건을 포함하는, ActionTable을 채우기 위해 몇 가지 방법을 문의하십시오. 나는 또한 내 컨트롤러의 동작을 장식

:

[Action(typeof(Vendors), "Create")] 
public ActionResult Create() 
{ 
    ... 
} 

내부 뷰, 내가 할 :

, 하나의 대상에 관한 Index 마음에 들지 뷰에서
<%= Html.IconActionLinks<Vendors>() %> 

<%= Html.IconActionLinks<Vendors>(Model) %> 

개체와 관련된보기에서 Details과 같습니다.

이렇게하면 권한은 하나의 클래스로 정의됩니다. 또한 표시 할 코드는 Edit에 대한 사용 권한을 기반으로 한 링크를 표시하는 것과 동일한 코드로 사용자가 Edit 동작을 볼 수 있도록 허용하거나 허용하지 않습니다. 나는 거의 끝났어요

은 (내가이 완료있을 때 내가 무슨 짓을했는지 다시 시작, 내 앞의 질문에 답변을 게시 할 예정).

지금 나는이 작은 조각을 Details보기 Details 아이콘, Index 아이콘 Index보기 등을 방지하기 위해 아직있다.

긴 게시물을 용서해주세요.

+0

? 어떤 이점이 있습니까? – UpTheCreek

+0

조치 아이콘 (편집, 세부 사항, 삭제 등)을 표시하고 있습니다. 각 페이지에 많은 아이콘을 표시하고 있습니다. 예를 들어, 세부 정보 페이지에 "세부 정보"아이콘을 표시하는 것이 부적절한 것 같습니다. – giorgian

답변

0

RouteValueDictionary에는 컨트롤러와 동작에 대한 키가 포함되어 있습니까? 우리가 볼 수있는 코드를 게시 할 수 있습니까?나는 다음과 같이 시도 할 것이다.

var currentPath = Request.PathAndQuery;

각 경로 값 사전을 통한 루프 { var someString; 사전 의 각 값에 대한 { 일부 문자열 에 추가}

then check that string against currentPath 
if true continue else create the link 
(not too efficient though) 

}이 작업을 수행 할 왜 궁금

+0

이제 귀하의 의견을 볼 수 있습니다. 나는 Sosh와 왜 동의하고 싶습니까? 왜냐하면 당신이 세부 사항보기에 있고 당신이 세부 사항보기에있는 코드를 편집하고 삭제하기를 원하기 때문입니다. 모든 행동에 부분 뷰를 사용하고 있습니까? 이 경우 3 개의 bool InDetails, InEdit, InDelete로 뷰 모델을 만들 수 있으며 현재 어떤 뷰에 있는지에 따라 해당 링크를 숨길 수 있습니다. –

+0

실제로 네,'RouteValueDictionary'는'action'과'controller' 키를 포함하고 있습니다. 난 그냥 강력한 코드를 작성하려고합니다. – giorgian

+0

함께 작업하는 견해는 무엇입니까? –

관련 문제