Как отправить идентификатор на другой контроллер для создания? - PullRequest
0 голосов
/ 28 декабря 2018

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

Я уже пытался создать RouteMap:

    routes.MapRoute(
    name: "GroupsStudents",
    url: "{controller1}/{id}/{controller2}/{action}",
    defaults: new { controller1 = "Groups", id = 
    UrlParameter.Optional, controller2 = "Students", action = 
    "Create" });

и в Студентах:

 public ActionResult Create(int id)
 {
    ViewBag.GruopID = new SelectList(db.Groups, "GroupID", "Name", 
    db.Groups.First(p => p.GroupID == id));
    return View();
 }

но я получаю эту ошибку: Совпадающий маршрут не включает значение маршрута 'controller', которое требуется.

Вот мои столы:

public class Group
{
    public int GroupID { get; set; }
    [Required]
    public string Name { get; set; }
    [ForeignKey("GroupID")]
    ICollection<Student> Students { get; set; }
}

public class Student
{
    public int StudentD { get; set; }
    public int GroupID { get; set; }
    public Group Group { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    public string Surname { get; set; }
}  

1 Ответ

0 голосов
/ 29 декабря 2018

Может быть, вы можете определить свой маршрут следующим образом:

routes.MapRoute(
    name: "GroupsStudents",
    url: "Groups/{groupId}/{controller}/{action}",
    defaults: new {controller = "Students", action = "Create" });

public ActionResult Create(int groupId)
 {
    ViewBag.GruopID = new SelectList(db.Groups, "GroupID", "Name", 
    db.Groups.First(p => p.GroupID == groupId));
    return View();
 }

Кроме того, я считаю, что параметр groupId не должен быть необязательным.

...