0

これがドロップダウンの作成方法です

@Html.DropDownListFor(model => model.NewPageModel.AvailablePageModels, new SelectList(Model.NewPageModel.AvailablePageModels, "Text", "Value"))

これが私のAvailablePageModelsの外観です

public IEnumerable<SelectListItem> AvailablePageModels
{
    get
    {
        foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
        {
            foreach (var type in assembly.GetTypes())
            {
                if (type.GetCustomAttributes(typeof(PageModelAttribute), true).Length > 0)
                {
                    yield return new SelectListItem { Text = type.Name, Value = type.Name };
                }
            }
        }
    }
}

フォームを次のアクションに投稿すると、modelstateは常に無効になり、AvailablePageModel値でエラーが発生しますか?たぶん、この方法でNewPageModelをパラメーターとして使用することはできませんか?

    public ActionResult Create([Bind(Prefix = "NewPageModel")] NewPageModel newPageModel, FormCollection collection)
    {
        if(ModelState.IsValid) {
            // always invalid
        }
    }
4

1 に答える 1

0

2つのフィールドが必要です。1つはドロップダウンリストで使用可能なオプション用で、もう1つは選択した値を保存するためのものです。

Html.DropDownListFor(m => m.NewPageModel.SelectedModel, 
new SelectList(Model.NewPageModel.AvailablePageModels, "Text", "Value"))
于 2011-01-09T17:32:09.717 に答える