【问题标题】:HTML Select control does not have selected value when generated with Razor DropDownListFor使用 Razor DropDownListFor 生成 HTML Select 控件时没有选择值
【发布时间】:2014-04-17 21:52:00
【问题描述】:

我在 asp.net/mvc4/razor 应用程序中有一个视图,我想在其中使用下拉列表控件编辑模型的值。我是这样用的:

@Html.DropDownListFor(m => m.DateFormat, new SelectList(new [] {"mm/dd/yyyy", "dd/mm/yyyy"}))

DateFormat 属性的值设置为模型中的其中一个值,但是当我加载视图时,html 选择始终设置为第一个值。我错过了什么吗?

更新:

这让我发疯了两天。最后我更改了属性的名称,它开始工作了。我认为它与我在同一键下存储在 ViewData/ViewBag 集合中的值有某种冲突。我还不确定为什么。也许有人可以解释一下?

【问题讨论】:

  • 看不到任何问题,为我工作!

标签: asp.net .net asp.net-mvc-4 razor


【解决方案1】:

试试你的 SelectList 类似这样的东西,你可以定义文本和值,以及选定的项目。

@(Html.DropDownListFor(m => m.DateFormat, new SelectList
(
    new List<Object> {
        new {
            value = "mm/dd/yyyy", text = "mm/dd/yyyy"
        },
        new {
            value = "dd/mm/yyyy", text = "dd/mm/yyyy"
        }
    }, "value", "text", Model.DateFormat)
))

【讨论】:

    【解决方案2】:

    此代码未经测试

    SelectList 设为模型的好友属性。

    public class MyModel(){
        prop DateTime MyDate {get;set;};
        prop SelectList SelectDates {get;set;}
    }
    

    然后在选择日期后填充SelectList(记住每次构建模型时都要这样做):

        SelectDates = dates.Select(d => new SelectListItem
        {
            Value = d.ToString(),
            Text = d.ToString(),
            Selected = d == MyDate
        })
    

    然后在构建下拉列表时使用该属性:

      @Html.DropDownListFor(m => m.DateFormat, Model.SelectDates ))
    

    【讨论】:

      猜你喜欢
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      相关资源
      最近更新 更多