Re: Соедините две страницы в asp. net mvc - PullRequest
0 голосов
/ 30 апреля 2020

Я даже не знаю, как это называется, поэтому я объясню, что я хотел бы сделать, и надеюсь, что кто-то поймет, о чем я говорю.

Я использую asp. net mvc код-первый подход C# и я создал модель «Сотрудник» с «Имя», «Фамилия», «DOB». Я также создал класс Gender, который отображает «Мужской» или «Женский».

Модель сотрудника и гендерная модель связаны отношением «от нуля до многих», поэтому в представлении «Создание сотрудника» есть раскрывающийся список, в котором пользователь может выбрать «Мужской» или «Женский» для указанных параметров c сотрудник, и эта часть приложения работает отлично.

В правой части страницы сотрудника у меня есть боковое меню с «Контактными данными сотрудника», «Зависимыми сотрудниками», и я создал Модель контактных данных сотрудника как а также модель зависимых сотрудников. Эти две модели не связаны с моделью сотрудника, так как мне не нужен раскрывающийся список для этой информации в представлении сотрудников. «Контактная информация mployee» и «Зависимые от сотрудников» в боковом меню - это гиперссылки, которые приведут пользователя к соответствующей странице просмотра.

Теперь это подводит меня к моему вопросу.

Как я могу сделать ссылку «Контактные данные сотрудника» и «Зависимые сотрудники», чтобы иметь возможность добавлять данные для сотрудника, а затем вызывать эти данные в режиме редактирования?

Когда пользователь добавляет нового сотрудника, он нажимает на Гиперссылка «Контактные данные сотрудника» в боковом меню, которая откроет страницу контактов, после чего будут добавлены контактные данные сотрудника. Информация о сотруднике должна быть назначена этому сотруднику.

Как это сделать?

С уважением, Кайл

1 Ответ

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

Прочитав это немного, я думаю, что понимаю, что вы пытаетесь сделать.

У вас есть Модель Сотрудника, которая имеет 0 - 1 связь с Полом, и у этого сотрудника может быть несколько контактов и несколько иждивенцев. (поправьте меня, если я ошибаюсь)

Так что ваши модели должны выглядеть следующим образом

Сотрудник

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public DateTime DOB { get; set; }

    public virtual Gender gender { get; set; } // gender relationship

    // allows you to pull all the contact details belonging to the employee
    public virtual ICollection<EmployeeContactDetail> EmployeeContactDetails { get; set; } 

    // allows you to pull all the dependants belonging to the employee
    public virtual ICollection<EmployeeDependent> EmployeeDependents { get; set; } 
}

Пол

public class Gender
{
    public int Id { get; set; }
    public string IdentityTerm { get; set; }
}

Контакт сотрудника Подробно

public class EmployeeContactDetail
{
    public int Id { get; set; }
    public string Feild1 { get; set; }

    // employee is associated to the contact detail
    public virtual Employee Employee { get; set; }
}

Зависимый от сотрудника

public class EmployeeDependent
{
    public int Id { get; set; }
    public string Feild1 { get; set; }

    // employee is associated to the dependent
    public virtual Employee Employee { get; set; }
}

Когда вы go используете информацию от сотрудника, вы можете легко получить ее с помощью структуры организации

Пример 1. вернуть список записей контактных данных

public ActionResult EmployeeContacts(int employeeId)
{
     ApplicationDbContext db = new ApplicationDbContext();
     var employee = db.Employee.Find(employeeId);

     if (employee == null)
     {
         return HttpNotFound();
     }

     // get all the employees contacts
     List<EmployeeContactDetails> contactDetailsList = employee.EmployeeContactDetails.ToList();
     return View(contactDetailsList); // pass the records to the view
}

Пример 2. вернуть указанную запись в представление

public ActionResult EmployeeContact(int employeeId, int contactId)
{
     ApplicationDbContext db = new ApplicationDbContext();
     var employee = db.Employee.Find(employeeId);

     if (employee == null)
     {
         return HttpNotFound();
     }

     // get all the employees contact by id
     var contactFoundById = employee.EmployeeContactDetails.Where(c => c.Id == idYourLookingFor).FirstOrDefault();

     if (contactFoundById == null)
     {
         return HttpNotFound();
     }
     return View(contactFoundById); // pass the record to the view
}

Пример 3. в представлении, если в качестве модели был выбран только один сотрудник

@model project.Models.Employee

// loop through all the employees contacts
@foreach (var item in Model.EmployeeContactDetails)
{
     @item.Feild1
}

// loop through all the employees EmployeeDependents
@foreach (var item in Model.EmployeeDependents)
{
     @item.Feild1
}

Пример 4. Другой вид со списком контактных данных в качестве модели

@model List<project.Models.EmployeeContactDetail>

// loop through all the employees contacts
@foreach (var item in Model)
{
     @item.Feild1
}

Редактировать: я добавил примеры того, как использовать структуру сущностей для передачи е Список сотрудников для просмотра. Я предлагаю изучить, как использовать структуру сущностей для передачи модели в представление и как использовать модель внутри представления. Вот небольшая статья обо всем этом.

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