ASP.NET MVC:在下拉列表中发布所选值的ID,Id和Value

时间:2017-11-01 22:34:40

标签: jquery asp.net-mvc razor

根据材料的选择填充其他下拉列表。目前,我将下拉列表绑定到MaterialID,然后查询控制器中的dbcontext以获取相应的MaterialName。我不想发布 MaterialName,因为我有一个javascript来回发MaterialId以获取级联下拉菜单的值。

当我从下拉列表中选择一个值并提交表单时,如何发布MaterialId和相应的MaterialName?它甚至可能吗?

控制器代码段

[HttpGet]
public ActionResult Index()
{
    ViewBag.MaterialList = new SelectList(db.Materials, "MaterialId", "MaterialName");
    Material material = new Material();
    material.MaterialCollection = db.Materials.ToList<Material>();
...
}


[HttpPost]
        public ActionResult Index(Plate plate)
        {
            try
            {
                var mname = db.Materials.Where(x => x.MaterialId == plate.Material.MaterialId).ToList();
                plate.Material.MaterialName = mname[0].MaterialName;
...
}

EF Model Material.cs

namespace WebApp.Models.EFModels
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations.Schema;

    public partial class Material
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Material()
        {
            this.Lengths = new HashSet<Length>();
            this.Widths = new HashSet<Width>();
            this.Thicknesses = new HashSet<Thickness>();
        }

        public int MaterialId { get; set; }
        public string MaterialName { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Length> Lengths { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Width> Widths { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Thickness> Thicknesses { get; set; }

        [NotMapped]
        public List<Material> MaterialCollection { get; set; }
    }
}

查看摘要

<div class="form-group">
            @Html.LabelFor(model => model.Material.MaterialId, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-5">
                @if (ViewBag.MaterialList != null)
                {
                    @Html.DropDownListFor(model => model.Material.MaterialId,
                         ViewBag.MaterialList as SelectList,
                         "Select", new { @class = "form-control" })
                }
                @Html.ValidationMessageFor(model => model.Material.MaterialId, "", new { @class = "text-danger" })
            </div>
        </div>

0 个答案:

没有答案