Отображать имя пользователя на основе идентификатора пользователя - PullRequest
0 голосов
/ 26 апреля 2020

Следующая модель содержит регистрационные данные

public class Registration
{
    public int RegistrationID { get; set; }

    [Required(ErrorMessage = "Enter Name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Mobileno Required")]
    [Display(Name = "Mobile No")]
    [RegularExpression(@"^(\d{10})$", ErrorMessage = "Wrong Mobileno")]
    public string Mobileno { get; set; }

    [Required(ErrorMessage = "EmailID Required")]
    [Display(Name = "Email")]

    public string EmailID { get; set; }
}

Следующее содержит назначенные записи пользователям в регистрационной модели выше

public class AssignedRoles 
{
    [Key]
    public int AssignedRolesID { get; set; }
    public int? AssignToAdmin { get; set; }
    public int? CreatedBy { get; set; }
    public DateTime? CreatedOn { get; set; }
    public int RegistrationID { get; set; }
    public string Status { get; set; }
    public DateTime? ModifiedOn { get; set; }
    [DataType(DataType.Time)]
    public string TurnAroundTime { get; set; }
    public virtual Incidence Incidence { get; set; }
    public int RegID { get; set; }
}

Ниже приведено представление

<table id="example1" class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>TSC NO</th>
            <th>Name</th>
            <th>Cell</th>
            <th>Request</th>
            <th>Request Type</th>
            <th>Incidence Type</th>
            <th>Duration</th>
            <th>Assigned To</th>
        </tr>
    </thead>
    @foreach (var item in Model)
    {

        <tr>
            <td>@item.Incidence.TSCNO</td>
            <td>@item.Incidence.Name</td>
            <td>@item.Incidence.CellPhone</td>
            <td>@item.Incidence.Request</td>
            <td>@item.Incidence.RequestType</td>
            <td>@item.Incidence.IncidenceType</td>
            <td>@item.TurnAroundTime</td>
            <td>Username goes here</td>
        </tr>
    }

</table>

Всякий раз, когда элемент назначается пользователю, registrationID, который служит UserID, помещается в столбец AssignToAdmin в AssignedRoles.

Однако, с точки зрения, я бы хотел для отображения Name администратора вместо ID.

1 Ответ

0 голосов
/ 26 апреля 2020

Вы должны изучить создание модели представления для информации, которую должна указывать эта конкретная c страница.

См. { ссылка } для более подробного ответа, но у вас есть две модели, показанные выше; Ваша модель «Регистрация» выглядит как модель ввода, где вы позволяете пользователям вводить свойства о пользователе, которого вы храните где-то, а модель «AssignedRoles» выглядит как модель домена, где вы храните отношения »за сцены ", вероятно, в базе данных или другом постоянном слое.

Однако, когда вы хотите представить эту информацию в своем представлении, вам нужна информация немного иная, чем при ее хранении, и именно здесь должна появиться модель представления. Модель представления может объединять информацию из нескольких различных моделей предметной области, чтобы обеспечить определенные c элементы данных, необходимые для ее отображения в вашем представлении. В своем бэкэнд-коде вы можете запросить как модель домена для ваших зарегистрированных пользователей, так и для ваших регистраций, и объединить их в единую модель представления, содержащую имя.

Следующий пример сокращен для ясности, чтобы проиллюстрировать концепция:

    public class RegistrationDomainModel
    {
        public int RegistrationId { get; set; }

        public string PropertyString { get; set; }

        public int UserId { get; set; }
    }

    public class UserDomainModel
    {
        public int UserId { get; set; }
        public string UserName { get; set; }
    }

    public class RegistrationViewModel
    {
        public string PropertyString { get; set; }

        public string UserName { get; set; } // we don't care about displaying the user's ID here, just the name
    }

    public class MyController : Controller
    {

        [HttpGet]
        public IActionResult Get(int registrationId)
        {
            var viewModel = new RegistrationViewModel();

            // We can go do whatever work is needed to collect and relate the information we need to display. This is a very dirty example.
            var myRegistrationDomainModel = _registrationDatabase.Get(registrationId);
            var myUserDomainModel = _userDatabase.Get(myRegistrationDomainModel.UserId);

            // The view model is generated with the information needed for display only.
            viewModel.PropertyString = myRegistrationDomainModel.PropertyString;
            viewModel.UserName = myUserDomainModel.UserName;

            return View(viewModel);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...