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 };
                }
            }
        }
    }
}

当我将表单发布到以下操作时,我的模型状态总是无效并且错误发生在 AvailablePageModel 值上?也许我不能以这种方式使用 NewPageModel 作为参数?

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

1 回答 1

0

您需要 2 个字段,一个用于下拉列表中的可用选项,一个用于存储所选值

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