0

我有我希望用户能够通过的“技能”列表,从列表中选择适当的级别。所以技能看起来像这样:

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,但我看不出这将如何与动态列表一起使用,并且由于它们都是相同的类型(“技能”),我猜 ViewModel 看起来就像模型列表。

有没有人有合适的解决方案?

谢谢

4

1 回答 1

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 足够聪明,它可以Skills使用 Skill.cshtml 编辑器模板呈现每个技能。

于 2013-02-27T18:51:20.513 回答