首页 > 解决方案 > 修改新建

问题描述

我有一个显示课程列表的视图。我想将用户链接到创建新视图。创建新视图应该针对用户选择的特定课程。但现在课程显示在下拉列表中。我不希望用户不得不再次选择课程。

我有一个索引视图,其中列出了课程(例如历史、数学……)。选择课程后,它会将其带到创建新视图。我想修改视图,以便用户填写特定课程的应用程序。


@Html.ActionLink("Choose", "ChooseCorse", "FillCourse", new { id = item.idCourse }, null)

现在我使用 ActionLink 将用户链接到创建新视图并获取课程的 ID,但这是我卡住的地方。如何显示所选课程并确保它已保存在数据库中?

[HttpGet]
public ActionResult ChooseCourse(int? id)
 {
   //For the dropdow list
   ViewBag.idCourse = new SelectList(db.tbCourses,"idCourse","Name",fillCourse.idCourse);
   return View();
 }

  [HttpPost]
  public ActionResult ChooseCourse (tbFillCourse fillCourse)
    {
       if(!ModelState.IsValid)
        {
           return View();
        }

        else
         {
            db.tbFillCourses.Add(fillCourse);
            db.SaveChanges();
            return RedirectToAction("Index");
          }

      }

这是我第一次使用该网站,所以如果我需要提供更多或做错了什么,请纠正我。

标签: asp.netasp.net-mvc

解决方案


这行得通吗?

[HttpGet]
public ActionResult ChooseCourse(int? id)
 {
   //For the dropdown list
   ViewBag.idCourse = new SelectList(db.tbCourses,"idCourse","Name",id);
   return View();
 }

我不知道参数tbFillCourse fillCourse是什么意思,但是;

  1. 你没有向它传递任何东西,所以它实际上应该失败,因为据我所知它不是一个可选参数
  2. 填充下拉列表时,您将其用作默认值

似乎所做的一切HttpGet都是填充下拉列表 - 它根本不返回视图。

我建议您使用断点单步执行并检查参数值


推荐阅读