2012-02-10 4 views
2

컴퓨터 지원 사고 관리 시스템에서 작업하고 있습니다.ASP.NET MVC 3에있는 단추 집합을 제시하고 레이아웃

현재 사건에 대한 Review보기는 다음과 같은 논리의 도움으로보기에 "렌더링"몇 가지 사건 조작 버튼을 포함

뷰의 모델인지 알 수있는 여러 가지 방법을 포함 어떤 동작은 이러한 방법의 결과에 따라 현재 관점에서이 입사

A part ViewModel to which the Review view is bound:

... 

    public bool CanContactUser() 
    { 
     return _manager.CanContactUser(Incident, User); 
    } 

    public bool CanComment() 
    { 
     return _manager.CanSetComment(Incident); 
    } 

    ... 

에서 실행되는 것이 허용되며, 이상적 상대 실제 버튼 cular 조치가 표시되거나 표시되지 않습니다.

... 

@if (Model.CanContactUser()) 
{ 
    @Html.MakePopupForm("ContactUser", new[] { "id" }, title: "Register user contact", refreshOnSuccess: true, okText: "Save", cancelText: "Cancel", resizable: false) 
} 

@if (Model.CanComment()) 
{ 
    @Html.MakePopupForm("Comment", new[] { "id" }, title: "Comment", refreshOnSuccess: true, okText: "Save", cancelText: "Cancel", resizable: false) 
} 

... 

나는 이것이 나쁜 습관이라고 생각합니다. 그것이 작동하더라도, 나는 (C# 코드에서) 메모리에 사용 가능한 버튼들의 모음을 가지고 있고, ViewModel 클래스 인스턴스에서 추측하고,이 콜렉션을 렌더링하기 위해 뷰를 bind한다.

어떻게 달성 할 수 있습니까? 뷰를 특히 버튼 모음에 바인딩합니다. List<AvailableButton> buttonsToRenderAsHtml의 추상 콜렉션을 생성 할 수 있습니다 ... 그러나 어떻게 면도기를 링크하여 제어 된 방식으로 표시합니까?

+0

해당 양식이 도우미에서 렌더링 될 수 있는지 확인할 수 있습니다. 열거 형 값을 보내고 그 뷰가 부분 뷰를 렌더링 할 수 있는지 확인하십시오. – Yorgo

+0

List 을 렌더링하는 방법을 알고 자하는 부분 뷰에 뭔가가 있어야합니다. 문제는 무엇입니까? 그것은 내가 상상할 수있는 것에서 꽤 간단해야합니다. –

답변

0

나는 이것이 귀하의 취향에 달려 있다고 생각합니다.

레이아웃에 인접한 버튼 세트가있는 경우 기존보기 모델에 속성을 추가 한 다음 루프로 렌더링 할 수 있습니다. EG는 :

@model IEnumerable<AvailableButton> :

@foreach(var button in Model.AvailableButtons) { 
    YourButtonRenderMethod(button) 
} 

또는 버튼의 집합을 렌더링 할 수있는 공유 부분도 있습니다. 이 경우

당신은 단지 호출 할 수

@Html.RenderPartial("SetOfButtons", Model.AvailableButtons)

이것은 내가 작성 가능 부분보기

하지만 당신의 버튼이 다른 지역에 흩어져있는 경우를 사용하여 내 UI를 구축하는 경향이 어떻게 당신의 레이아웃을 볼 때 나는 당신에게 선택의 여지가 있지만 개별적으로 체크하지는 않는다고 생각합니다.

이것은 논리적으로 볼 때의 논리이기 때문에 제 생각에는 그렇게 느껴서는 안됩니다.