C# “储蓄”;选择多个";数据库中的值
我可以从中选择多个选项(每个选项代表他们拥有的技能) 表格是这样的C# “储蓄”;选择多个";数据库中的值,c#,asp.net-mvc,database,select,C#,Asp.net Mvc,Database,Select,我可以从中选择多个选项(每个选项代表他们拥有的技能) 表格是这样的 @model Ability.Models.ViewModel <h2>Add Skill</h2> <form action="" method="post"> <select multiple name="AddSkillForm"> @foreach (var skill in Model.Skills) {
@model Ability.Models.ViewModel
<h2>Add Skill</h2>
<form action="" method="post">
<select multiple name="AddSkillForm">
@foreach (var skill in Model.Skills)
{
<option value="@skill.ID">@skill.SkillName</option>
}
</select>
</form>
@model-Ability.Models.ViewModel
增加技能
@foreach(Model.Skills中的var技巧)
{
@skill.SkillName
}
如您所见,他们可以选择多个选项
我的数据库如下所示
现在我想知道如何成功地将数据保存到表单中。我正在考虑使用一个类似
教师/添加技能/1
其中“1”表示教师ID,当然,技能ID通过表格给出
我的问题是,如何将多个值传递给控制器,并将其正确保存在数据库中
期待任何帮助 正如达林所建议的那样
正确的方法是将视图模型与
用于强类型帮助程序的Html.listbox
我会使用多选列表框。模型装订机将处理其余部分
模型视图
public class MyModelView
{
public IEnumerable<SelectListItem> Skills{ get; set; }
public string[] SelectedSkills { get; set; } // You could use List<string> instead.
public int TeacherId {get;set;}
}
@Html.ListBoxFor(s => s.SelectedSkills ,
new MultiSelectList(Model.Skills, "Value", "Text", Model.SelectedSkills ),
new { @class = "form-control", style = "height:250px; width:100%" })
@Html.HiddenFor(s => s.TeacherId)
控制器
[HttpPost]
public ActionResult Save(MyModelView model)
{
foreach (string skill in model.SelectedSkills){//Selected Skills. Save to database}
}
编辑
从数据库中获取技能。根据您的数据库结构,您应该能够从桥接表“TeacherSkills”中获得每位教师的所有技能。您需要填写SelectedSkills属性,其中Skills应包含所有可用技能
List<SelectListItem> selectedSkills= service.GetSkillsByTeacherId(teacherId);
if (selectedSkills != null && selectedSkills.Count > 0)
{
model.SelectedSkills = selectedSkills.Select(x => x.Value).ToArray();
}
List selectedSkills=service.GetSkillsByTeacherId(教师ID);
if(selectedSkills!=null&&selectedSkills.Count>0)
{
model.SelectedSkills=SelectedSkills.Select(x=>x.Value).ToArray();
}
创建一个映射POST请求值的类。伙计,用@foreach
语句生成dropdownlist,真的吗?@DarinDimitrov这有什么不对?正确的方法是什么?这个@Html.ListBoxFor(x=>x.Skills)
有一个helper方法,我不确定foreach本身是否有什么问题,但如果使用helper方法,它可能更干净、更易于维护。我不确定为什么这个问题有两个赞成票,它没有包含足够的信息来回答它。您选择了什么方法与数据库、存储过程、实体框架进行交互?感谢您的回复,我将尝试一下,并让您知道它是如何进行的。很抱歉,我们在编写查询以获得数据库中的所有技能方面遇到了困难。我们正在尝试这样的东西{Skills=(从db.Skills中的s选择s)};但是这显然是错误的,那么我们应该如何编写正确的查询呢?这不是问题,Nicolas。我已经更新了答案,让我知道进展如何。