ВОПРОС
Как безопасно и эффективно проверить, заполнена ли модель представления данными, в самом представлении?
ОБЪЯСНЕНИЕ
Я передаю модель в представление, похожее на это;
return View(response.Success ? (SalesDashboardViewModel)response.Model : new SalesDashboardViewModel());
Теперь у представления либо есть полностью заполненная модель представления со всеми данными.или, если модель представления не была заполнена правильно, у нее может быть пустое «SalesDashboardViewModel».Если второй случай верен, то, когда я, например, вызову @Model.CountOfUsers
в представлении, я получу ошибку null object reference
.
Как, в представлении, я буду проверять, является ли это пустым илинет, кроме проверки, является ли одно из его свойств нулевым (из-за того, что свойства могут измениться).
ПЕРЕКЛЮЧЕНИЕ ПОЛНОГО КОДА
// Контроллер
public ActionResult SalesDashboard(){
var response = DashboardService.BuildSalesViewModel(User.Identity.GetUserId());
return View(response.Success ? response.Model : new SalesDashboardViewModel());
}
// Заполнение SalesDashboardViewModel
public CustomResponseModel BuildSalesViewModel(string userId)
{
try
{
CustomResponseModel response;
var vm = new SalesDashboardViewModel();
response = GetCountOfSuspectsAddedThisMonth(userId);
vm.NoSuspectsAddedThisMonth = response.Success ? (int)response.Model : throw new Exception(response.Reason);
response = GetCountOfProspectsAddedThisMonth(userId);
vm.NoPropectsAddedThisMonth = response.Success ? (int)response.Model : throw new Exception(response.Reason);
response = GetCountOfCustomersNotContactedRecently(userId, 12);
vm.NoCustomersNotContactedRecently = response.Success ? (int)response.Model : throw new Exception(response.Reason);
response = GetTopProspects(userId, 10);
vm.TopProspects = response.Success ? (List<Prospect>)response.Model : throw new Exception(response.Reason);
return new CustomResponseModel { Success = true, Model = vm };
}
catch (Exception e)
{
return new CustomResponseModel
{
Success = false,
Reason = e.Message,
};
}
}
Если есть лучший способ сделать это, тогда я открыт для предложений.Я ценю помощь:)