MVC C #의 사용자 역할에 따라 동적 메뉴를 만들고 있는데 (HTML 태그를로드 할 수있는 동안) 메뉴의 작업 링크가 렌더링되지 않습니다. 나는 이것이 시작 부분의 @ at 기호 때문이라고 생각합니다.
if(userGroup.Equals("Administrators")){
menuItems+=@"<span class=""menuItem"">
@Html.ActionLink(""Add User"", ""RegisterNewUser"", ""Home"", null, new{@Class=""menuItemActionLink""})
</span>";
}
(...)
ViewData["menuItems"]=menuItems;
보기 검색 사용 :
@Html.Raw(@ViewData["menuItems"])
나는 아무 소용이없는 html 인코딩의 변형을 시도했습니다. 내가 생각할 수있는 가장 좋은 해결책은 at 기호 이스케이프 코드를 사용하는 것이지만 그것이 무엇인지 모르겠습니다 ( "@"+ @ "Html.ActionLink 형식의 연결뿐만 아니라 '\'도 시도했습니다). 아이디어?
액션 링크가 제대로 렌더링되지 않는 이유가 정확히 무엇인지 모르겠지만 (클래스의 대문자 C 일 수 있습니까?), 컨트롤러에서 뷰로 html을 보내는 것은 좋은 생각이 아닙니다. 이것은 컨트롤러와 뷰의 역할을 합쳐서 이러한 엔터티 간의 구별을 기대하는 사람이 더 어렵게 만듭니다.
더 나은 옵션은보기에 다음과 같은 코드 블록을 포함하는 것입니다.
@if (ViewData["admin"] != null){ ...code to render your admin menu ... }
컨트롤러에서 :
if(userGroup.Equals("Administrators")){ ViewData["admin"] = true; }
필요에 따라 이러한 스 니펫이 변경 될 수 있습니다. true 또는 false (null 대신)를 테스트하거나 문자열을 추가 할 수 있습니다. ViewData는 당신이 만드는 것과 거의 같습니다. 그러나 이것은 적어도 뷰에서의 HTML 렌더링과 컨트롤러에서의 프로세스 제어 사이의 차이를 유지합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다