我有一些“技能”列表,我希望用户能够通过,从列表中选择适当的级别。所以Skill看起来像这样:
public class Skill
{
public String SkillName { get; set; }
public SkillLevel CurrentSkillLevel { get; set; }
public Boolean IsRequired { get; set; }
public Skill(String Name)
{
this.SkillName = Name;
this.IsRequired = true;
this.CurrentSkillLevel = SkillLevel.None;
}
}
可能有数百种技能 - 目前确切的数字是未知的,当然它需要是动态的,所以我不想让用户经历点击每项技能的过程,填写表格,每次提交。我想在同一页面中显示所有技能(每行一行),允许用户选择所有值,然后在结束时点击提交一次。
不幸的是,除了单例创建之外,我没有任何使用MVC的经验。我通常会为捆绑在一起的几个模型使用单独的ViewModel,但我不知道它如何与动态列表一起使用,并且因为它们都是相同的类型(“Skill”),我想ViewModel看起来很像一个模型列表。
有没有人有合适的解决方案?
由于
答案 0 :(得分:1)
基于DaveA的答案,您可以使用Skill的编辑器模板。您需要将名为EditorTemplates
的文件夹添加到Views\Controller
文件夹中。现在在名为Skill.cshtml
的文件夹中创建一个看起来像这样的
@model Skill
@Html.TextBoxFor(s => s.SkillName)
@Html.TextBoxFor(s => s.Skills[i].Title)
// etc...
现在在主视图中
using (Html.BeginForm("UpdateCart", "Orders"))
{
@Html.TextBoxFor(p=>p.Name)
@Html.TextBoxFor(p=>p.Title)
@Html.EditorFor(p => p.Skills)
}
Razor非常聪明,它将使用Skill.cshtml编辑器模板在Skills
中呈现每项技能。