C# DropDownList了解如何从数据库设置默认值

C# DropDownList了解如何从数据库设置默认值,c#,html,asp.net,asp.net-mvc,html.dropdownlistfor,C#,Html,Asp.net,Asp.net Mvc,Html.dropdownlistfor,我有一个下拉列表,在我看来是这样的: @Html.DropDownListFor(m => m.ProductCategory, new SelectList(Model.ProductCategories.OrderBy(m => m.PCNumber), "", "Name"), "") 这是应该的。在我的下一个视图中,用户应该能够编辑他的订单。所以我想做的是,如果他打开表单,他之前的所有数据都应该显示出来,对于文本框,我用下面的代码得到它: @Html.TextBoxFor

我有一个下拉列表,在我看来是这样的:

@Html.DropDownListFor(m => m.ProductCategory, new SelectList(Model.ProductCategories.OrderBy(m => m.PCNumber), "", "Name"), "")
这是应该的。在我的下一个视图中,用户应该能够编辑他的订单。所以我想做的是,如果他打开表单,他之前的所有数据都应该显示出来,对于文本框,我用下面的代码得到它:

 @Html.TextBoxFor(m => m.NameOfProduct, new { @Value = @Model.NameofProduct })
所以现在我的问题是,当值存储在我的模型(数据库)中时,我如何才能对DropDownList的文本框(从我的模型中为它们提供默认值)执行相同的操作?如果他之前选择了类别3,现在想要编辑之前的订单,dropdownlist应该立即显示类别3


谢谢你的帮助

试试这段代码,它可能在你的情况下起作用

@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
以及下拉列表,其中默认包含您要编辑的
ProductCategories
,请检查此问题:。当然,您可以从控制器或视图端设置DDL默认值。切勿在
HtmlHelper
方法中设置value属性。它只是
@Html.TextBoxFor(m=>m.NameOfProduct)
。对于dropdownlist,在将模型传递给视图之前,只需在GET方法中设置
ProductCategory
的值(例如
model.ProductCategory=3;返回视图(model);
谢谢你们两位提供的信息。如果我理解正确@StephenMuecke,我也会在get方法中为我的文本框设置所有值?@RawMVC,是的,然后你的表单控件将绑定到你的模型好的,我会这样做,我会在尝试时在这里给出快速反馈!)