Большая часть моего кода внутри представлений, кажется, принимает приведенную ниже форму, когда я хочу показать конкретные частичные представления (или некоторый другой клиентский код) на основе некоторого значения основной таблицы в базе данных -
<div id="@claim.Id" class="ReimbursementClaims">
@if (claim.ClaimStatus.SubmissionStatus == "Unsubmitted")
{
<partial name="~/Views/Claims/_ClaimDetailsEditor.cshtml" />
}
else (claim.ClaimStatus.SubmissionStatus == "Approved")
{
<partial name="~/Views/Claims/_ClaimDetailsReadonly.cshtml" />
}
</div>
Внутренняя база данных содержит таблицу утверждений и связанную таблицу ClaimStatusMaster. Таблица ClaimStatusMaster - это основная таблица, означающая, что она существует только для хранения статических значений, таких как «Одобрено», «Не отправлено». Например -
create table Claim (Id int, ClaimStatusId int) --ClaimStatusId is a foreignkey linking to ClaimStatusMaster
create table ClaimStatusMaster (id int, SubmissionStatus varchar(20))
insert into ClaimStatusMaster values (2, 'Unsubmitted')
insert into ClaimStatusMaster values (1, 'Approved')
insert into ClaimStatusMaster values (3, 'Rejected') --etc
Как видите, соответствующий вид, который будет отображаться, полностью зависит от значения поля SubmissionStatus таблицы ClaimStatusMaster. Но если SubmissionStatus изменяется по какой-либо причине, условия ifelse в представлении нарушаются. Кроме того, вся эта настройка выглядит как запах кода. Итак, я пытаюсь выяснить, как лучше это кодировать, чтобы минимизировать такую связь, а также иметь возможность условно отображать соответствующие представления на основе значений SubmissionStatus. Как мне этого добиться?
PS: Возможно, я могу поместить код ifelse в контроллер, но, похоже, это приводит к более или менее той же проблеме.