【问题标题】:DropDownListFor How to set a default value from a databaseDropDownListFor 如何从数据库中设置默认值
【发布时间】:2017-02-18 15:10:19
【问题描述】:

所以,我得到了一个 DropdownListfor,在我看来是这样的:

@Html.DropDownListFor(m => m.ProductCategory, new SelectList(Model.ProductCategories.OrderBy(m => m.PCNumber), "", "Name"), "")

这就像它应该的那样工作。在我的下一个视图中,用户应该能够编辑他的订单。所以我想做的是,如果他打开表单,应该显示他之前的所有数据,对于文本框,我可以使用以下代码:

 @Html.TextBoxFor(m => m.NameOfProduct, new { @Value = @Model.NameofProduct })

所以现在我的问题是,当值存储在我的模型(数据库)中时,我如何才能对 DropDownListFor 的文本框(从我的模型中为它​​们提供默认值)做同样的事情?应该是这样,如果他之前选择了类别 3,现在想要编辑他之前的订单,下拉列表应该立即显示类别 3。

感谢您的帮助!

【问题讨论】:

  • 检查这个问题:stackoverflow.com/questions/23799091/…。当然,您可以从控制器或视图端设置 DDL 默认值。
  • 永远不要在HtmlHelper 方法中设置值属性。它只是@Html.TextBoxFor(m => m.NameOfProduct)。而对于下拉列表,您只需在将模型传递给视图之前在 GET 方法中设置ProductCategory 的值(例如model.ProductCategory = 3; return View(model);
  • 感谢两位提供的信息。如果我理解正确@StephenMuecke,我也会在 get 方法中为我的文本框设置所有值吗?
  • @RawMVC,是的,然后您的表单控件将绑定到您的模型
  • 好的,我会这样做,我会在我尝试时在这里快速反馈! :)

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


【解决方案1】:

尝试此代码可能适用于您的情况。

@Html.DropDownListFor(m=> m.PCNumber, new SelectList(m.ProductCategories, "PCNumber", "ProductCategory"), "-- Select Category --", new { @class = "form-control" })

在这里,您将在下拉菜单中获得默认的编辑顺序

   [HttpGet]
        public ActionResult EditOrder(int? id)
        {
            _obj_order_detail = db.order_detail.Find(id);
            if (_obj_order_detail != null)
            {
                _obj_order_detail.ProductCategories = db.category_detail.ToList(); //get category List
                return View(_obj_order_detail);
            }
            else
            {
                return view();
            }

        }

这将返回带有您要编辑的订单的视图,ProductCategories 和下拉菜单默认包含您要编辑的 ProductCategory

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多