繁体   English   中英

如何在Create.cshtml中创建下拉列表

[英]How to create drop down list in Create.cshtml

如何在Create.cshtml中创建下拉列表,该列表由DB中的数据组成,如果没有此类数据,您可以选择输入新值并将其保存在DB中。

我尝试从数据库查询到一个列表,并使用ViewBag.DropDownList(它在Index.cshtml中有效,但在Create.cshtml中不起作用,因为出现错误:没有“ IEnumerable”类型的ViewData项具有键“ MyDropDownList“)

Create.cshtml:

@using LicenseManager.Models
@model LicenseManager.Models.CompanyNames
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm()) 
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>CompanyNames</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
            @Html.DropDownList("CompanyNames", (SelectList)ViewBag.DropDownValues)
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval") }

和控制器CompanyNames.cs:

public class CompanyNamesController : Controller
{
    private ApplicationDbContext db = new ApplicationDbContext();

    // GET: CompanyNames
    public ActionResult Index()
    {
        ApplicationDbContext db = new ApplicationDbContext();
        var querys = from c in db.CompanyNames
            select c.Name;

        ViewBag.DropDownValues = new SelectList(querys);
        return View(db.CompanyNames.ToList());
    }
}

有人可以帮我弄这个吗? 我只需要某种方向去做。 抱歉,代码...。

创建的模型:

public class CustomerModel
{
  public List<SelectListItem> ListAdCode { get; set; }
}

创建一个绑定列表的函数:

 public static List<SelectListItem> AdCodeList()
        {
            List<SelectListItem> list = new List<SelectListItem>();
            list.Add(new SelectListItem { Text = "--Select--", Value = null, Selected = true });
            using (CrmKolmEntities entities = new CrmKolmEntities())
            {
                var allActiveCAdCodes = entities.AdCodes.Where(x => x.IsDeleted == false).ToList();
                if (allActiveCAdCodes.Count() > 0)
                {
                    foreach (var adCode in allActiveCAdCodes)
                    {
                        list.Add(new SelectListItem { Text = adCode.AdCodeName, Value = adCode.AdCodeId.ToString() });
                    }
                }
            }
            return list;
        }

在控制器上:

public ActionResult ManipulateCustomer(int id, int? idOrder)
        {
            CustomerModel model = new CustomerModel();

            model.ListAdCode = AdCodeList();

            if (model.ListPriceList == null)
            {
                model.ListPriceList = CommonFunctions.PriceListActive(null);
            }
            return View(model);
        }

查看时:

 @Html.DropDownListFor(r => r.AdCodeId, new SelectList(Model.ListAdCode, "value", "text", "selectedValue"), new { @class = "input", @style = "width:450px" })

我认为您需要Html.DropDownList而不是ViewBag.DropDownList 前者来自HtmlHelper类,我认为这是您所需要的。 您可以在此处了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM