Azure .Основное приложение NET MVC: не удалось найти подходящий конструктор для типа модели

#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;
}