Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DropDownList允许用户选择;名称“;但要创造",;ID";在数据库中_C#_Asp.net_Asp.net Mvc 5_Crud - Fatal编程技术网

C# DropDownList允许用户选择;名称“;但要创造",;ID";在数据库中

C# DropDownList允许用户选择;名称“;但要创造",;ID";在数据库中,c#,asp.net,asp.net-mvc-5,crud,C#,Asp.net,Asp.net Mvc 5,Crud,我正在尝试创建一个web应用程序,允许用户从DB中选择一个培训课程,然后“应用”到此课程。这些申请将被记录在“课程需求”表中 我有一张名为“InternalCourses”的桌子 我有一张叫做“课程任务”的表格 我构建了一个CREATE.CSHTML页面,允许用户选择一门课程,然后点击“CREATE”,它应该在相关表中创建一条记录。我的问题是,我需要用户选择一个CourseName,让程序将相关ID发送回数据库,然后丢弃CourseName。 此页面的屏幕截图如下所示: 我的控制器类:

我正在尝试创建一个web应用程序,允许用户从DB中选择一个培训课程,然后“应用”到此课程。这些申请将被记录在“课程需求”表中

我有一张名为“InternalCourses”的桌子
我有一张叫做“课程任务”的表格

我构建了一个CREATE.CSHTML页面,允许用户选择一门课程,然后点击“CREATE”,它应该在相关表中创建一条记录。我的问题是,我需要用户选择一个CourseName,让程序将相关ID发送回数据库,然后丢弃CourseName。 此页面的屏幕截图如下所示:

我的控制器类:

    // GET: CourseRequests/Create
    public ActionResult Create()
    {
        ViewBag.InternalCourses = db.InternalCourses.ToList();
        ViewBag.EmployeeID = new SelectList(db.Employees, "EmployeeID", "FirstName");
        ViewBag.ManagerID = new SelectList(db.Employees, "ManagerID", "FirstName");
        ViewBag.CourseID = new SelectList(db.ExternalCourses, "CourseID", "CourseName");
        ViewBag.CourseID = new SelectList(db.InternalCourses, "CourseID", "CourseName");
        ViewBag.CourseID = new SelectList(db.TrainingFeedbacks, "CourseID", "Question");
        return View();
    }
My Create.cshtml

<!-- CourseID-->
        <div class="form-group">
            @Html.LabelFor(model => model.CourseID, "CourseID", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(m => m.CourseID, new SelectList(ViewBag.InternalCourses, "CourseID", "CourseName"), new { @class = "form-control" } )
                @Html.ValidationMessageFor(model => model.CourseID, "", new { @class = "text-danger" })
            </div>

@LabelFor(model=>model.CourseID,“CourseID”,htmlAttributes:new{@class=“controllabel col-md-2”})
@DropDownListFor(m=>m.CourseID,新建选择列表(ViewBag.InternalCourses,“CourseID”,“CourseName”),新建{@class=“form control”})
@Html.ValidationMessageFor(model=>model.CourseID,“,new{@class=“text danger”})
我的(相关)模型图: 此图显示了从
InternalCourse.CourseID
CourseRequest.CourseID
的链接。请注意,CourseRequests表不包含仅“CourseName”ID


请有人告诉我哪里出了问题,我可以看到我试图将CourseName放入ID字段,但不知道如何更改此字段。

好吧,对于初学者来说,您定义了
ViewBag.CourseID
三次,这完全是浪费资源,因为只有最后一次才能坚持。前两个只是浪费的查询:

ViewBag.CourseID = new SelectList(db.ExternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.InternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.TrainingFeedbacks, "CourseID", "Question");
接下来,当使用
ViewBag
存储选择列表时,需要小心不要破坏任何模型数据。
ModelState
(它是
ViewBag
的一部分)中的任何内容都会覆盖模型中的任何内容。因此,当您在
ViewBag.CourseID
中存储了一个选择列表时,您将永远无法显示属性
CourseID
的所选值,因为该值始终是选择列表本身,而不是所选的项目。使用不同的名称,例如
ViewBag.CourseChoices

最后,我不确定你到底遇到了什么问题。在选择列表中显示一个选项(如名称)并提交另一个选项(如id)并不困难。应按以下格式调用
SelectList
的构造函数:

new SelectList(listOfItems, propertyToUseAsValue, propertyToUseAsText)

因此,在您的场景中,只要您按“CourseID”和“CourseName”的顺序输入它,您就会得到您想要的。我提到的其他一些问题可能是您问题的根源。

首先,您定义了三次
ViewBag.CourseID
,这完全是浪费资源,因为只有最后一次才能坚持。前两个只是浪费的查询:

ViewBag.CourseID = new SelectList(db.ExternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.InternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.TrainingFeedbacks, "CourseID", "Question");
接下来,当使用
ViewBag
存储选择列表时,需要小心不要破坏任何模型数据。
ModelState
(它是
ViewBag
的一部分)中的任何内容都会覆盖模型中的任何内容。因此,当您在
ViewBag.CourseID
中存储了一个选择列表时,您将永远无法显示属性
CourseID
的所选值,因为该值始终是选择列表本身,而不是所选的项目。使用不同的名称,例如
ViewBag.CourseChoices

最后,我不确定你到底遇到了什么问题。在选择列表中显示一个选项(如名称)并提交另一个选项(如id)并不困难。应按以下格式调用
SelectList
的构造函数:

new SelectList(listOfItems, propertyToUseAsValue, propertyToUseAsText)

因此,在您的场景中,只要您按“CourseID”和“CourseName”的顺序输入它,您就会得到您想要的。我提到的其他一些问题可能是您问题的根源。

首先,您定义了三次
ViewBag.CourseID
,这完全是浪费资源,因为只有最后一次才能坚持。前两个只是浪费的查询:

ViewBag.CourseID = new SelectList(db.ExternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.InternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.TrainingFeedbacks, "CourseID", "Question");
接下来,当使用
ViewBag
存储选择列表时,需要小心不要破坏任何模型数据。
ModelState
(它是
ViewBag
的一部分)中的任何内容都会覆盖模型中的任何内容。因此,当您在
ViewBag.CourseID
中存储了一个选择列表时,您将永远无法显示属性
CourseID
的所选值,因为该值始终是选择列表本身,而不是所选的项目。使用不同的名称,例如
ViewBag.CourseChoices

最后,我不确定你到底遇到了什么问题。在选择列表中显示一个选项(如名称)并提交另一个选项(如id)并不困难。应按以下格式调用
SelectList
的构造函数:

new SelectList(listOfItems, propertyToUseAsValue, propertyToUseAsText)

因此,在您的场景中,只要您按“CourseID”和“CourseName”的顺序输入它,您就会得到您想要的。我提到的其他一些问题可能是您问题的根源。

首先,您定义了三次
ViewBag.CourseID
,这完全是浪费资源,因为只有最后一次才能坚持。前两个只是浪费的查询:

ViewBag.CourseID = new SelectList(db.ExternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.InternalCourses, "CourseID", "CourseName");
ViewBag.CourseID = new SelectList(db.TrainingFeedbacks, "CourseID", "Question");
接下来,当使用
ViewBag
存储选择列表时,需要小心不要破坏任何模型数据。
ModelState
(它是
ViewBag
的一部分)中的任何内容都会覆盖模型中的任何内容。因此,当您在
ViewBag.CourseID
中存储了一个选择列表时,您将永远无法显示属性
CourseID
的选定值,因为该值始终是其选择列表