0

オブジェクトのプロパティを表示して編集できるようにするこの Web ページがあり、DropDownList別のクラスからの文字列を入力します。

にデータを入力するために使用する方法は次のDropDownListとおりです。

private void PopulateOBJSetDropdownList(object selectedobj = null)
        {
            List<string> listOBJSetName = m_OBJSetManager.GetListOBJSets().OrderBy(x => x.m_Name)
                                                           .Select(x => x.m_Name.ToString())
                                                           .Distinct()
                                                           .ToList();
            ViewBag.objSetID = new SelectList(listOBJSetName );
        }

プロパティはViewBag非常にうまく機能しますが、項目を編集するとリストが空になります。

私はそれがこの行のせいだと確信しています:

<div class="editor-label">
            @Html.LabelFor(model => model.m_OBJSetID, "Obj Set")
        </div>
        <div class="editor-field">
            @Html.DropDownList("objSetID ", String.Empty)
            @Html.ValidationMessageFor(model => model.m_OBJSetID)
        </div>

ドロップダウンリストにはString.Empty. これは、obj のコントローラーから取得されます。

基本的に、DropDownList使用可能な objSet のすべての名前を表示したいのですが、obj を編集するときに、デフォルトで正しい objSet が選択されるようにしたいと考えています。

誰でも助けることができますか?私は十分に明確ですか?みんなありがとう。

4

1 に答える 1

0

私はビューバッグを避けます。ビューモデルを作成し、代わりにそれを渡したい場合があります。ただし、これはビューバッグでも実行できます。

まず、あなたの見解では、ドロップダウンを次のように変更します

@Html.DropDownListFor(model => model.m_OBJSetID, DDLSelectitemListGoesHere)

ビュー モデルを実行する場合、このページで使用する必要があるすべてを 1 つのクラスに含めて、ビューに送信できます。

public class MyViewModel{
    public List<YourModel> theModel { get; set; }
    public IEnumerable<SelectListItem> DDLItems { get; set; }
}

次に、あなたの見解で、一番上に

@model PROJECTNAME.NAMESPACE.MyViewModel

ドロップダウンに次のように入力できます

@Html.DropDownListFor(model => model.theModel.m_OBJSetID, model.DDLItems)

うまくいけば、それらの1つがあなたを通り抜けます

于 2013-02-05T19:19:53.890 に答える