3

私はMVCを初めて使用し、テストアプリケーションを試して足を濡らしています。このアプリケーションの一部は、ドロップダウン ボックスを含むフォームを生成することです。私は

@Html.DropDownListFor() を使用してこれを生成すると、作成フォームでドロップダウンが正常に機能します。しかし、編集フォームに移動すると、モデル値がドロップダウンに渡されません。

SelectList アイテム

 public static string[] OnOffList()
    {
        var ret = new string[] { "On", "Off" };
        return ret;
    }

フォームコード

@Html.DropDownListFor(model => model.ServiceCondition, new SelectList(OnOffDropDownHelper.OnOffList()))

このインスタンスでは、model.ServiceCondition = "Off" と仮定します。

何らかの理由で、このフォームを呼び出すたびに、ドロップダウン値が常に「オン」になり、モデル値が完全に無視されているようです。

私もこれを試しました

@Html.DropDownListFor(model => model.ServiceCondition, new SelectList(OnOffDropDownHelper.OnOffList(), "Off"))

「オフ」値を義務付けますが、ドロップダウンで選択された値として「オン」として表示されます。

繰り返しますが、モデル値が「オフ」であることは知っています。同じ @Html.DropDownListFor() を使用して同一の「作成」フォームを作成し、モデルに値を渡すことができました。

私が言ったように、私はMVCが初めてなので、どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

3

プロパティを設定する必要があると思いますIsSelected。これは常に私にとってはうまくいきます:

まず、モデルにプロパティを配置して、View コードを整理します。

public List<SelectListItem> OnOffDDL
{
    get
    {
        return OnOffDropDownHelper.OnOffList()
            .Select(s => new SelectListItem
                         {
                             Text = s,
                             Value = s,
                             Selected = ServiceCondition == s
                         })
            .ToList();
    }
}

次に、次のようにします。

@Html.DropDownListFor(model => model.ServiceCondition, model.OnOffDDL)
于 2013-05-08T13:15:31.403 に答える
1

これは少しやり過ぎかもしれませんが、モデルがモデル自体に基づいて異なるオプションを持つことができる場合に役立ちます (今のところオンとオフだけですが)。将来、特定のアイテムが「スタンバイ」モードなどを持つことができれば、その特定のアイテムのデータベースから実際のオプションを取得できるようになります。

ソースに SelectList を使用して、モデルに次のものを含めることができます。

public List<SelectListItem> OnOffList{ get; set; }

次に、次のようにモデルをコントローラーに入力します。

model.OnOffList.Add(new SelectListItem()
{
    Text = "On",
    Value = "On"
});

...等。

次に、選択した項目を次のように設定できます。

@Html.DropDownListFor(m => m.ServiceCondition, new SelectList(Model.OnOffList(), "Value", "Text", Model.ServiceCondition))
于 2013-05-08T14:08:54.267 に答える
0

私の初歩的なミスであることが判明しました。

データベースを設計した人は、フィールド ServiceCondition を nchar(8) にして、「on」、「Off」値の最後に空白を残していました。

問題のフィールドの .Trim() は問題を修正しました。

助けてくれてありがとう。

于 2013-05-08T14:25:25.320 に答える