Я обращаюсь к таблицам Azure в методе, который я создал как часть файла модели (cs) страницы Razor.Результаты имеют тип TenantEntityModel
.Я хотел бы просто отобразить эти результаты в своем представлении.
Возможно ли это сделать, и если да, что должно быть в моей модели страницы Razor?
Метод в моем RazorМодель имеет следующий вызов:
TenantEntityModel Result = await azureTableConnection.TenantLookupAsync(azureTableConnection, domainName, id);
Я думал, что мог бы просто использовать @Model.Result.DomainName
в представлении, однако нет ссылки на этот объект, поскольку Result
не существовало в моей модели Razor.Поэтому я попытался добавить его в свою модель Razor следующим образом:
public TenantEntityModel Result { get; }
Это позволяет мне получить доступ к свойствам Result
в моем представлении Razor.Если я поставлю точку останова перед оператором return Page()
, я увижу, что у объекта Result
есть свойства, которые мне нужны.Однако когда представление отображается, свойство Result
объекта Model
имеет значение null, и я получаю:
NullReferenceException: ссылка на объект не установлена на экземпляр объекта.
Я также попытался добавить BindProperty
следующим образом:
[BindProperty]
public TenantEntityModel Result { get; }
... но это тоже не сработало.Так что я не знаю, как получить результаты запроса, заполнить объект моделью из другого класса, а затем отобразить страницу с результатами этого объекта.
Просмотр кода:
@page
@model ApiKeyModel
@if (@Model.Result.ApiKey == null)
{
//show the button
<button name="CreateApiKey" type="submit" class="btn btn-primary">Create new API Key</button>
}
Код контроллера:
public class ApiKeyModel : PageModel
{
private readonly UserManager<UserRegistrationExtension> _userManager;
private readonly ILogger<PersonalDataModel> _logger;
[BindProperty]
public TenantEntityModel Result { get; set; }
public ApiKeyModel(
UserManager<UserRegistrationExtension> userManager,
ILogger<PersonalDataModel> logger)
{
_userManager = userManager;
_logger = logger;
}
public async Task<IActionResult> OnGet()
{
// need to validate if account exists first
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
var domainName = user.Office365DomainName;
var id = user.Id;
AzureTableConnection azureTableConnection = new AzureTableConnection();
TenantEntityModel Result = await azureTableConnection.TenantLookupAsync(azureTableConnection, domainName, id);
return Page();
}