2011-05-05 4 views
2

안녕하세요 MVC에서보기 모드 개념을 구현하는 방법에 대해 누구도 성급하게 생각하고 있는지 확인하려고합니다. 따라서 사용자가 페이지를 열면 페이지가보기 모드 (모든 컨트롤이 비활성화 됨)로 열리십시오. 편집 권한이 없으면 다른 것으로 열어야합니다. 보기 페이지에는 부분 페이지도 있습니다. 참고로 MVC 프레임 워크에서 페이지에 대한 완전한 제어권을 가지고 있다고 생각합니다.MVC -보기 모드에서 페이지 열기

답변

0

입력 컨트롤을 생성하기 위해 표준 MVC 메서드를 사용하는 경우 다음과 같은 방법으로 수행 할 수 있습니다.

@Html.TextBox("MyTextBoxID", Model==null?"":Model.MyFieldValue, new {disabled = "disabled}) 

입력 컨트롤을 생성하기 위해 표준 MVC 메서드를 사용하지 않는 경우. 자신 만의 메서드를 만들어 입력 컨트롤을 생성 할 수 있습니다. 또 다른 방법

MyExt.cs

public static class MyExt 
{ 
    public static MvcHtmlString MyTextBox(this HtmlHelper html, string id, object value) 
    { 
      // check user privilege 
      if (CurrentUser.CanEditThisPage /*Implement your own logic here */) 
       return html.TextBox(id, value); 
      else 
       return html.TextBox(id, value, new {disabled = "disabled"}); 
    } 
} 

예를 들어 그리고 당신의 페이지

@using MyNamespace 
... 
@Html.MyTextBox("MyTextBoxID", Mode==null?"":Model.MyFieldValue) 

의 모든 컨트롤을 사용하지 않도록하기 위해 클라이언트 측 자바 스크립트를 사용 또는 JQuery와에 서버 측에서 표시를 전달합니다. (문법의 정확성에 대해 확실하지 : P) 같은 자바 스크립트에서

@Html.Hidden("CanEdit", CurrentUser.CanEditThisPage) 

void pageLoad() { 
    if ($("#CanEdit").val() == "true")) 
     $("input").attr("disabled", "disabled"); 
} 

뭔가 빠른 회신

+0

감사합니다. 이 질문에 대한 답변 – Amitesh