Вы можете добавить метод к классу, который будет принимать значения, определяющие условие, и возвращать только соответствующие перечисления. Например, скажем, можно только повысить статус до более высокого статуса, но не переместить его обратно в более низкий статус. Вы можете добавить метод, который будет принимать текущий статус и возвращать только статусы с более высоким значением.
Метод (добавить в LeaveRequestModel
класс)
public IEnumerable<LeaveStatus> GetAvailableStatuses(){
return Enum.GetValues(typeof(LeaveStatus)).Where(e => e >= Status);
}
Просмотр
@Html.EnumDropDownListFor(m => m.LeaveStatus, Model.GetAvailableStatuses().Select(s => new SelectListItem {
Text = s.ToString(),
Value = ((int)s).ToString()
}).ToList(), "-Please select-", new { @class = "col-sm-10", @required = "required" })
Обратите внимание, что я взял предположить, каким может быть ваше состояние, но вы можете обновить его в методе GetAvailableStatuses
.