【问题标题】:Setting default value to Html.DropDownListFor将默认值设置为 Html.DropDownListFor
【发布时间】:2015-07-07 06:35:13
【问题描述】:

我正在使用 viewbag 在 mvc 中填充一个下拉列表。 如果页面未使用任何其他值保存,我想为此下拉列表设置默认值。 否则,所选项目应该是他们选择并保存页面的项目。

这就是我填充我的视图包的方式

ViewBag.ListOfCountries = new SelectList(Db.Countries, "CountryCode", "CountryName");

这是视图面:

<%: Html.DropDownListFor(m => m.OfficeAddressCountry, (IEnumerable<SelectListItem>)ViewBag.ListOfCountries, new{@class="required"}) %>

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller html.dropdownlistfor


    【解决方案1】:

    如果您想为下拉列表传递默认值,那么您可以通过默认值传递默认视图模型/模型

    例子:

    public ActionResult New()
    {
        MyViewModel myViewModel = new MyViewModel ();
        myViewModel.OfficeAddressCountry = default value; 
        //Pass it to the view using the `ActionResult`
        return ActionResult( myViewModel);
    }
    

    或者你可以试试这个

     var list = new SelectList(Db.Countries, "CountryCode", "CountryName")
     list.Add(new SelectListItem(){Value = 1,Text = "Deafult Item",Selected = true };)
     ViewBag.ListOfCountries = list;
    

    【讨论】:

    • myViewModel.OfficeAddressCountry ==null?默认值:myViewModel.OfficeAddressCountry;
    • 不应该只在用户没有选择选项时才默认吗?
    • 您可以使用 Pranay 的解决方案,并在我的评论中使用默认值的 IFF 子句。我相信应该可以工作
    • @Krishna - 我假设它在这里称为新操作 ...如果使用选择并提交它会调用 post 操作,所以这只是在调用 new 以创建新记录时的一种初始化 ..later 任务通过new的post方法处理
    • 抱歉错过了 New() -
    【解决方案2】:

    你必须使用不同的 DropDownListFor 重载。考虑一下:

    <%: Html.DropDownListFor(m => m.OfficeAddressCountry,
                             ViewBag.ListOfCountries as SelectList,
                             "Default Selected Option",
                             new{@class="required"}) %>
    

    现在,如果模型属性OfficeAddressCountry 不包含任何值,它会将默认选定选项设置为“默认选定选项”。

    您可以查看this fiddle for default valuethis with selected option which is in Model

    【讨论】:

    • 默认情况下我们可以在数据库中输入 null 或 -1
    【解决方案3】:
    <%: Html.DropDownListFor(m => m.OfficeAddressCountry,
                         ViewBag.ListOfCountries as SelectList,
                         "Default Selected Option",
                         new{@class="required"}) %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多