-1

私のクラスは

public partial class Team
    {
        public Team()
        {
            this.Trials = new HashSet<Trials>();               
        }

        public int TeamId { get; set; }
        public string TeamName { get; set; }
        public string TeamDescription { get; set; }
        public virtual ICollection<Trials> Trials { get; set; }
    }

ビューは

@model Project.Classes.Team

 <td>
         @for (int i = 0; i < Model.Trials.Count; i++ )
         {                
                @Html.DisplayFor(x => Model.Trials.ElementAt(i).Name)
                @Html.HiddenFor(x => Model.Trials.ElementAt(i).Name)
                @Html.HiddenFor(x => Model.Trials.ElementAt(i).TrialID)
                @Html.CheckBoxFor(x => Model.Trials.ElementAt(i).isChk)  
             <br />               
         } 
</td>

ビューが表示されると、モデル (チーム) に Trials オブジェクト (3 Trials) が表示され、フォームに表示されますが、フォームが投稿されると、コントローラーで Trials の値が取得されず、0 Trials が表示されます...完了しましたクラスで ICollection を IList に変更することで... Team Class は EF によって自動生成され、プロジェクトを再実行すると変更が忘れられるので、ICollection plz で行いたい .....

4

1 に答える 1

1

View/Shared/EditorTemplatesフォルダーに、次のコードで名前を付けた新しいビューを追加しますTrials.cshtml(部分ビューとして作成します)。

@model YourAssembly.Trial
@Html.HiddenFor(m => m.ID)
@Html.HiddenFor(m => m.Name)
@Html.DisplayFor(m => m.Name)
@Html.CheckBoxFor(m => m.isChk)

次に、ビューでループを次のように置き換えます@Html.EditorFor(m => m.Trials)

@model Project.Classes.Team
....
@Html.EditorFor(m => m.Trials)

EditorForポストバック用のインデクサーでコレクション項目に正しく名前を付けます。たとえば、

<input type="hidden" name="Trials[0].ID" ...>
<input type="hidden" name="Trials[1].ID" ...>

注: 本当に 1 つのテーブル セル内にコレクション全体を表示したいのですか?それともTrial、行ごとに 1 つ、表示名とチェックボックスを別々tdの要素に表示するという意味ですか? trf にandtd要素を追加できるようにしますEditorTemplate

于 2014-10-08T08:34:54.313 に答える