1

私はビューモデルを使用しています。これをアクション結果に送信して使用する場合(変更されたビューモデル)

しかし、コントローラーでは、ビューモデルのリストとオブジェクトが失われます。これは私の見解です:

@using PigeonFancier.Models
@model PigeonFancier.Models.InschrijvingModel
@using (Html.BeginForm("UpdateInschrijvingen","Melker",Model))
{
<div>
    <fieldset>
        <table>

            @foreach (var item in Model.inschrijvingLijst)
            {
                <tr>
                    <td>@Html.DisplayFor(model => item.Duif.Naam)</td>                              
                    <td> @Html.CheckBoxFor(model => item.isGeselecteerd)</td>                              
                </tr>
            }
        </table>   
        <input type="submit" value="Wijzigen"/>
    </fieldset>
</div>
}

これは私のコントローラーで、ビューから完全なビューモデルを取得できるまで、現時点では何もしません。

public ActionResult UpdateInschrijvingen(InschrijvingModel inschrijvingsModel)

    {
        // inschrijvingsModel is not null, but it creates a new model before 
            it comes here with 
        //Use the model for some updates

        return RedirectToAction("Inschrijven", new { vluchtId = 
                   inschrijvingsModel.vlucht.VluchtId });
    }

これは、ビューから actionresult に戻るときに新しいモデルを作成するため、null になる List およびその他のオブジェクトを含むモデルです。

public class InschrijvingModel
{
    public Vlucht vlucht;
    public Duivenmelker duivenmelker;
    public List<CheckBoxModel> inschrijvingLijst { get; set; }

    public InschrijvingModel()
    {
        // Without this i get, No parameterless constructor defined exception. 
        // So it uses this when it comes back from the view to make a new model
    }

    public InschrijvingModel(Duivenmelker m, Vlucht vl)
    {
        inschrijvingLijst = new List<CheckBoxModel>();
            vlucht = vl;
            duivenmelker = m;

        foreach (var i in m.Duiven)

        {
            inschrijvingLijst.Add(new CheckBoxModel(){Duif = i, 
            isGeselecteerd =  i.IsIngeschrevenOpVlucht(vl)});
        }

    }

何がうまくいかず、どうすればこの問題を解決できますか?

ありがとう

4

3 に答える 3

0

この記事で使用されているアプローチは、次のような解決策になる可能性があります。

http://erraticdev.blogspot.com/2010/09/preparing-list-of-objects-so-they-can.html

于 2012-07-01T20:46:44.603 に答える
0

を使用して、リストの部分的な解決策を見つけました

for および [i] foreach の代わりに

ただし、オブジェクトの代わりに int Id を使用しても、オブジェクトは null のままです。

また、これらのオブジェクトの Html.hiddenfor で既に試しても機能しません

于 2012-07-01T17:29:40.050 に答える
0

明確に定義されたモデルにすべてのリストとプロパティを含める必要があります。

POST アクションでビューモデルを取得したら、操作 (作成、編集など) を実行します。同じビュー(ポスト アクションがある)に戻りたい場合は、すべてのリスト値を再設定する必要があります(ドロップダウンとチェックボックスリスト) を返し、それらをビューモデルに設定します。

于 2012-07-01T17:58:52.363 に答える