Мне нужен совет о том, что мне нужно сделать, чтобы следующие два блока кода можно было использовать повторно.Мне нужно создать другую таблицу фондов, и пока я делаю это, я хотел бы создать частичное представление FundsTable.ascx, которое могут использовать все представления, которые должны отображать таблицу фондов.
// Inherits="System.Web.Mvc.ViewPage<CompanyViewModel> // this is a company
<%foreach (var fund in Model.PageFunds){%>
<% foreach (var shareClass in fund.ShareClasses) {%>
<tr class="shareclass">
<td>
// displays an image if the ViewModel's Company is not unlisted
<%= Html.TearsheetImage((Model.Company.ListingType != ListingType.UNLISTED))%>
</td>
</tr>
<% } }%>
и
// Inherits="System.Web.Mvc.ViewPage<GroupViewModel> // this is a group of companies
<%foreach (var fund in Model.PageFunds){%>
<% foreach (var shareClass in fund.ShareClasses) {%>
<tr class="shareclass">
<td>
// displays an image if any Company in the ViewModel's
// List<Company> is not unlisted
<%= Html.TearsheetImage(
(Model.Companies.WithCompanyId(fund.Company.Id) != ListingType.UNLISTED))%>
</td>
</tr>
<% } }%>
Я думаю, что мне нужно где-то абстрагироваться от различий, но я не уверен, где это поставить.Есть ли эмпирическое правило, которому я должен следовать здесь?
Должны ли оба CompanyViewModel
& GroupViewModel
реализовать интерфейс, который решает, есть ли элемент в списке?Кроме того, какого типа должен быть мой FundTable.ascx?Я думал, что оба CompanyViewModel
& GroupViewModel
могут расширяться FundViewModel
(или что-то в этом роде), и я мог бы сделать FundTable ViewUserControl<FundViewModel>
, но я не думаю, что это сработает, потому что функциональность необходима для определения, отображать ли изображениедолжен прийти из CompanyViewModel
& GroupViewModel
независимо.
Плюс, чем больше я об этом думаю, тем больше я сам себя кланю!Есть идеи или предложения?Thankss