Jaxam Ответов: 1

Добавить список пользователей в объектную модель (MVC5)


В моем приложении MVC5 уже есть несколько пользователей с назначенной ролью.

У меня есть модель билета с некоторой базовой информацией о билете.

Теперь я хочу добавить дополнительное свойство под названием AssignedToUser к этой модели билета. В моем индексном представлении я хочу видеть одно имя пользователя, назначенное свойству AssignedToUser, и когда я редактирую билет, я хочу иметь выпадающий список всех доступных пользователей, чтобы я мог назначить билет. Как я могу сделать это с помощью кода? Любая помощь будет оценена по достоинству.

Public class Ticket
{
	public int Id { get; set; }
    Display(Name = "Ticket comes from")]
	public string Source { get; set; }
	//....
	// Now I want to have a property called AssignedToUser
	//...something like this
	// Display(Name = "Ticket Assign To")]
	// public string AssignedToUser {get; set;} ***I want this to display the User Name of the User in Index View page. But, I also want a dropdown list of user when I am in Edit mode so that I can change the AssignedToUser to have different user.
}


В моем методе редактирования билета (int id) я в настоящее время запросил билет с помощью идентификатора билета и вернул его для просмотра.

//HttpGet
     public ActionResult Edit(int id)
     {
         Models.Ticket model = db.Ticket
             .Include("Source")
             .Include("....")
             .SingleOrDefault(m => m.Id == id);

         if (model == null)
         {
             return new HttpNotFoundResult();
         }

         return View(model);
     }


Что я уже пробовал:

Я пробовал погуглить его, но не смог найти ничего, что было бы непосредственно связано со мной.

1 Ответов

Рейтинг:
10

Ramesh Kumar Barik

Добавьте в модель билета одно свойство AssignedToUser типа int и одно несопоставленное свойство AssignedUserName (которое будет содержать имя этого пользователя) строкового типа. Таким образом, один билет может быть назначен только одному пользователю одновременно. Когда вы получаете информацию о билете в это время, вы можете установить значение AssignedToUser.

Для выпадающего списка пользователей вы можете добавить SelectListItem в свой метод действия с информацией о пользователе и установить его в VeiwBag для передачи данных от контроллера к просмотру.

Пример: для SelectListItem вы можете обратиться к этой ссылке.
c# - как я могу это получить ASP.NET MVC SelectList для работы? - переполнение стека[^]

Проверьте это, это может вам помочь.


Jaxam

зачем нам нужен тип int AssignedToUser? Это потому, что мы можем затем назначить билет идентификатору пользователя, чтобы позже нам было проще запросить его, чтобы получить весь билет для пользователя?

Ramesh Kumar Barik

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

Jaxam

как это сделать, используя подход viewmodel вместо viewbag?

Ramesh Kumar Barik

Да, ViewModel-это лучший подход.