使用 Html.DropDownListFor 时 ModelsState 始终无效

发布于 2024-10-11 06:34:54 字数 1036 浏览 2 评论 0原文

这就是我创建下拉列表的方式

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

,这就是我的可用页面模型的样子

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

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

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

This is how I create my dropdown

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

and this is how my AvailablePageModels looks like

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

and when I post my form to the following action my modelstate is always invalid and the error occur on the AvailablePageModel value? Maybe I cannot use the NewPageModel as a parameter this way?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍风燃霜 2024-10-18 06:34:54

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

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

You need 2 fields, one for the available options in the drop down list and one for storing the selected value

Html.DropDownListFor(m => m.NewPageModel.SelectedModel, 
new SelectList(Model.NewPageModel.AvailablePageModels, "Text", "Value"))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文