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;
    }
}

何百ものスキルが存在する可能性があります - 現時点では正確な数は不明であり、確かに動的である必要があるため、各スキルをクリックしてフォームに入力するプロセスをユーザーに行わせたくありません。そして毎回提出。すべてのスキルを同じページ (それぞれ 1 行) に表示し、ユーザーがすべての値を選択できるようにしてから、最後に [送信] を 1 回クリックしたいと考えています。

残念ながら、シングルトンの作成以外に 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 に答える