【问题标题】:Getting an MVC DropDownList to show the selected item获取 MVC DropDownList 以显示所选项目
【发布时间】:2012-01-26 23:36:12
【问题描述】:

我有这个代码:

@Html.DropDownList("ddlCouponsAppointment",
    Model.Coupons.Select(a => new SelectListItem {
                                    Text = a.Name,
                                    Value = a.CouponId.ToString(),
                                    Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId)
                        }), 
    "None",
    new { @class = "normalcell" })

这已经工作了很长时间。现在,它抛出一个错误,谷歌告诉我这是因为我不允许在映射到类的实体上调用 ToString(这个类没有改变,所以我不知道它以前是如何工作的)。所以我添加了一个名为 CouponIdStr 的属性,它是一个字符串表示形式。这不起作用(炸毁 b/c 属性未映射到数据库)。我尝试使值等于 string.Empty + a.CouponId (因为 C# 会将其连接为字符串)。炸了。

所以我尝试了这个:

@Html.DropDownList("ddlCouponsAppointment",
    new SelectList(Model.Coupons,
        "Name",
        "CouponId",
        Model.CouponForAppointmentReminders.CouponId),
    "None",
    new { @class = "normalcell" })

这有效,但不显示所选项目。有人有什么建议吗?

【问题讨论】:

  • 在你的第二个代码块中我看不到 Selected = (a.CouponId == Model.CouponForAppointmentReminders.CouponId) 你怎么说@Html.DropDownList 然后选择一些东西?
  • 你错过了正在发生的事情。 SelectList 构造函数采用选定值的参数。事实证明,我的名字和优惠券ID 弄错了。我试图发布一个答案,但 SO 不允许我这样做(我点击“答案”并浏览了,所以我没有看到回复),所以这就是为什么尽管我找到了一个没有解决方案的原因.仍然想知道为什么第一块代码无法工作,我可以看到。

标签: c# asp.net-mvc html-select


【解决方案1】:

步骤 1. 创建一个具有选定值的 ViewModel

第 2 步。在该 ViewModel 中,选择列表中有您想要的项目列表

public class ViewModel {      
   public int Selected {get;set;}
   public IEnumerable<Option> Options {get;set;}
}

第 3 步。在您看来,使用 DisplayFor 方法

Html.DisplayFor(m => m.Selected, new SelectList(Model.Options, "Id", "Display"));

你有它,当下拉菜单呈现时,它将选择选定的值!

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多