C# DropDownList允许用户选择;名称“;但要创造",;ID";在数据库中
我正在尝试创建一个web应用程序,允许用户从DB中选择一个培训课程,然后“应用”到此课程。这些申请将被记录在“课程需求”表中 我有一张名为“InternalCourses”的桌子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。 此页面的屏幕截图如下所示: 我的控制器类:
我有一张叫做“课程任务”的表格 我构建了一个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
的选定值,因为该值始终是其选择列表