나는 IColumn 인터페이스를 만든 다음 내 모델의 다른 패싯을 올바르게 표시 할 수있는 열 클래스를 만들어서이 문제를 처리했습니다. 뷰는 각 열을 간단한 for 루프로 렌더링합니다. 예를 들어 : 이것은 나를 위해 잘 작동하고있다
<tr>
<% foreach (var column in Model.UserColumns) { %>
<th><%= column.Title %></th>
<% } %>
</tr>
<% foreach (var item in Model.Items) { %>
<tr>
<% foreach (var column in Model.UserColumns) { %>
<td><%: column.Render(item) %></td>
<% } %>
</tr>
<% } %>
:보기에
public interface IColumn
{
string Title { get; }
string Render(MyModelObject obj);
}
public class NameColumn : IColumn
{
public string Title { get { return "Name"; } }
public string Render(MyModelObject obj)
{
return obj.Name;
}
}
당신은 다음과 같은 일을 할!
class UserViewModel
{
[DisplayName("User name")]
public string UserName { get; set; }
[DisplayName("E-mail address")]
public string Email { get; set; }
[DisplayName("Age")]
public int Age { get; set; }
}
그런 다음 당신은 쉽게 반사를 통해 속성에 액세스 할 수 있습니다 및 사용자 설정에서 선택한 속성 목록을 저장합니다
이 또한 모델 (보기 모델과 비교)에서 작동해야합니까? –
@HughSeagraves 예. – LukLed