ASP.NET MVC - drop down list selection - partial views and model binding

后端 未结 1 1992
清歌不尽
清歌不尽 2020-12-09 23:30

I\'m fairly new to ASP.NET MVC and am trying to work out the best way to do this. It\'s probably simple but I just want to do things correctly so I thought I\'d ask.

相关标签:
1条回答
  • 2020-12-09 23:41

    Here is one way to do this. Create a TaskDetailsViewModel

    public class TaskDetailsViewModel
    {
        public TaskDetailsViewModel()
        {
            this.Task = new Task();
            this.StaffMembers = new List<StaffMember>();
        }
    
        public Task Task { get; set; }
        public IEnumerable<StaffMember> StaffMembers { get; set; }
    }
    

    In Controller

    public ActionResult Edit(int id)
    {
        var task = taskRepository.GetTaskByID(id);
    
        var taskDetailsViewModel = new TaskDetailsViewModel();
    
        // Populate taskDetailsViewModel from task and staff
    
        return View(taskDetailsViewModel);
    }
    
    [HttpPost]
    public ActionResult Edit(TaskDetailsViewModel taskDetailsViewModel)
    {
        if (ModelState.IsValid)
        {
            taskRepository.Save(taskDetailsViewModel.Task);
        }
        else
        {
            // Show Error
        }
    
        return View(taskDetailsViewModel);
    }
    

    In View (bound strongly to TaskDetailsViewModel)

    @Html.DropDownListFor(model => model.Task.AssignedStaffMember, new SelectList(Model.StaffMembers, "ID", "FirstName", Model.Task.AssignedStaffMember))
    @Html.ValidationMessageFor(model => model.Task.AssignedStaffMember)
    
    0 讨论(0)
提交回复
热议问题