DropDownListFor内部编辑器不选择值

 enjoy楠神 发布于 2023-02-12 18:39

我发现了几个关于我的问题的问题,但没有一个问题实际上解决了问题,并提出了问题的替代解决方案,这就是为什么我再次问这个问题.

我使用的是强类型HTML帮助程序,而不是仅用于页面标题的ViewData和ViewBag.

这是我的问题.

我有以下viewmodel.

public class RegisterViewModel
{

    public string Mail                      { get; set; }
    public string Name                      { get; set; }

    public ThreePartDatePickerViewModel ThreePartDateSelection { get; set; }

    public RegisterViewModel()
    {
        ThreePartDateSelection = new ThreePartDatePickerViewModel();
    }
}

以上viewmodel使用下面的viewmodel,它基本上保存3个下拉列表的数据,即日,月和年.

public class ThreePartDatePickerViewModel
{
    public string Day              { get; set; }
    public string Year             { get; set; }
    public string Month            { get; set; }

    public IList Years      { get; set; }
    public IList Months     { get; set; }
    public IList Days       { get; set; }

    public ThreePartDatePickerViewModel()
    {
        var now = DateTime.Now;

        Years = new List();
        Months = new List();
        Days = new List();

        var empty = new SelectListItem { Text = "" };
        Years.Add(empty);
        Months.Add(empty);
        Days.Add(empty);

        foreach(var item in Enumerable.Range(0, 100).Select(x => new SelectListItem { Value = (now.Year - x).ToString(), Text = (now.Year - x).ToString() }))
            Years.Add(item);

        foreach(var item in Enumerable.Range(1, 12).Select(x => new SelectListItem { Value = x.ToString(), Text = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x) }))
            Months.Add(item);

        foreach(var item in Enumerable.Range(1, 31).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() }))
            Days.Add(item);


    }
}

在返回RegisterViewModel查看的操作方法中,我设置了Day,Month和Year属性ThreePartDatePickerViewModel.

我在运行时检查了这些值,同时生成视图并且它们是正确的.

在我的主要观点中,

@model Bla.Bla.RegisterViewModel



@Html.EditorFor(m => m.ThreePartDateSelection)

我的ThreePartDatePickerViewModel编辑器模板是

@model Bla.Bla.ThreePartDatePickerViewModel

@Html.DropDownListFor(m => m.Day, Model.Days) @Html.DropDownListFor(m => m.Month, Model.Months) @Html.DropDownListFor(m => m.Year, Model.Years)

在我最终渲染的html中,我按预期拥有所有控件.下拉列表正常,但未选中我在操作方法中设置的值.

如果我从EditorTemplates切换到部分视图,它开始工作.或者,如果直接在主视图中呈现下拉列表,而不是将模型传递给EditorFor,它再次起作用.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有