배경 :
탭 컨트롤을 구현하려고합니다. 다음과 같이각 탭이 일반 페이지 된 엔터티 인 탭 컨트롤을 구현하는 방법은 무엇입니까?
| Funds | Companies | Groups |
및 구현 :
public PartialViewResult ResultsList(SearchViewModel search)
{
var result = new SearchViewModel
{
Summary = _entitySearchService.GetSearchDataSummary(search.SearchExpression),
PagedFunds = _fundService.GetPagedEntitiesByName<Fund>(10, search.SearchExpression),
PagedCompanies = _companyService.GetPagedEntitiesByName<Company>(10, search.SearchExpression),
PagedGroups = _groupService.GetPagedEntitiesByName<CompanyGroupInfo>(10, search.SearchExpression)
};
}
이 작품 :
<ul class="ActionControl">
<li>
<%=Html.ActionLink(string.Format("Funds ({0})", Model.Summary.FundCount)
, "ResultsList", new {selectedTab = "Funds"}) %>
</li>
// more tabs removed for brevity, one <li> for each
</ul>
각 탭과 같이 정의 된 액션 메소드에 대한 링크입니다 탭은 다음과 같습니다 ,하지만 그것은 정확하지 않습니다. 단지 클릭 한 탭에 대한 데이터를 다시 가져 오려고하기 때문입니다. search.SelectedTab
에 저장된 값에 switch()
을 입력하고 클릭 한 탭과 연결된 속성 만 채우는 것은 가능하지만 지저분합니다.
또한 부분보기에서 문제가되는데, 테이블을 구분할 탭을 구분해야하기 때문에 부분보기에 문제가 있습니다. 현재이 당신이 자금 탭을 클릭 한 경우 나 결과 패널을 채우는 것입니다 방법입니다 참고로
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SearchViewModel>" %>
<% Html.RenderPartial("Tabs"); %>
<table>
<% foreach (var item in Model.PagedFunds) {%>
<tr>
<td><%= item.Name %></td>
</tr>
<% }%>
</table>
을,이 SearchViewModel입니다 :
public class SearchViewModel
{
public string SearchExpression { get; set; }
public string SelectedTab { get; set; }
public SearchDataSummary Summary { get; set; }
public Paging<Fund> PagedFunds { get; set; }
public Paging<Company> PagedCompanies { get; set; }
public Paging<CompanyGroupInfo> PagedGroups { get; set; }
}
및 페이징에 대한 서명은 다음과 같습니다
public class Paging<T> : List<T> // contains functionality to manage paging and act like a List<T>
질문 :
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
각 탭마다 별도의 작업 방법을 사용해야합니까? 그래서 Funds
를 클릭하면
public PartialViewResult Funds(SearchViewModel search)
로 이동하고 ViewUserControl<Paging<Fund>>
및 Companies
을 클릭이
public PartialViewResult Companies(SearchViewModel search)
로 이동하고 ViewUserControl<Paging<Company>>
가 이상적으로는 단일 ResultsView
액션 메소드를 유지하고있을 수 돌려줍니다 페이징 된 항목을 반환하는보다 일반적인 방법. 나는 이것이 가능하다고 생각하지만 세부 사항에 너무 푹 빠져서 나무를 볼 수 없다. 누군가 제가 취할 수있는 접근법을 지적 해주십시오. 감사합니다.
나는 적어도 당신의 제안과 함께 가기로 결정했다. 내가 그것을 일반적으로 다시하는 길을 볼 수 있다면, 내가 할 수있는 것을 보게 될 것이다. 그러나 지금은 진전을 이루어야하며 귀하의 제안은 효과가 있습니다. 감사 – DaveDev