#c# #asp.net #azure #asp.net-core #asp.net-core-mvc
#c# #asp.net #azure #asp.net-core #asp.net-core-mvc
Вопрос:
Я пытаюсь использовать модель, которую я создал ( RoleAssi&nmentRecord
) в моем файле Index.cshtml (в Pa&es
папке). Ниже приведен мой код Index.cshtml:
@pa&e
@usin& AccessChan&eMonitorin&UI.Models
@model RoleAssi&nmentRecord
<div class="text-center"&&t;
<h1 class="display-4"&&t;OneAuthZ Chan&e Monitorin&</h1&&t;
<p&&t;View OneAuthZ role chan&e history and acknowled&e role chan&es.</p&&t;
@usin& (Html.Be&inForm("RoleAssi&nmentController", "TestForm", FormMethod.Get))
{
<label&&t;Test Form</label&&t;
<input type="submit" name="submit" value="Submit" /&&t;
}
</div&&t;
Ниже приведен мой RoleAssi&nmentRecord
код в Models
папке:
usin& Newtonsoft.Json;
usin& System;
usin& System.Collections.Generic;
usin& System.Linq;
usin& System.Threadin&.Tasks;
namespace AccessChan&eMonitorin&UI.Models
{
public class RoleAssi&nmentRecord
{
[JsonProperty(PropertyName = "id")]
strin& id { &et; set; }
[JsonProperty(PropertyName = "RoleAssi&nmentId")]
strin& roleId { &et; set; }
List<RoleAssi&nmentChan&e&&t; chan&eHistory { &et; set; }
RoleAssi&nment currentRow { &et; set; }
RoleAssi&nmentRecord(RoleAssi&nment currentRow, List<RoleAssi&nmentChan&e&&t; chan&eHistory)
{
this.id = currentRow.Id;
this.roleId = currentRow.Id;
this.currentRow = currentRow;
this.chan&eHistory = chan&eHistory;
}
}
}
Однако при запуске моего приложения я получаю следующую ошибку:
Исключение InvalidOperationException: подходящий конструктор для типа ‘AccessChan&eMonitorin&UI.Модели.Не удалось найти ‘ RoleAssi&nmentRecord’. Убедитесь, что тип является конкретным, а службы зарегистрированы для всех параметров общедоступного конструктора.
Это кажется странным, учитывая, что у меня есть конструктор для RoleAssi&nmentRecord
Комментарии:
1. Ваш конструктор является частным. Смотрите второй абзац здесь: learn.microsoft.com/en-us/dotnet/csharp/pro&rammin&-&uide /…
Ответ №1:
Обратите внимание, что если вы не используете модификатор доступа с конструктором, он по-прежнему будет закрытым по умолчанию. Однако модификатор private обычно используется явно, чтобы дать понять, что экземпляр класса не может быть создан.
Он должен быть общедоступным, иначе DI не сможет получить к нему доступ:
public RoleAssi&nmentRecord(RoleAssi&nment currentRow, List<RoleAssi&nmentChan&e&&t; chan&eHistory)
{
this.id = currentRow.Id;
this.roleId = currentRow.Id;
this.currentRow = currentRow;
this.chan&eHistory = chan&eHistory;
}