C# 根据下拉列表选择显示表单字段

C# 根据下拉列表选择显示表单字段,c#,asp.net,.net,asp.net-mvc,entity-framework,C#,Asp.net,.net,Asp.net Mvc,Entity Framework,当用户选择资产类型时,我希望我的“创建”表单根据选择的资产类型显示不同的字段 例如:如果用户选择资产类型“Laptop”,我希望表单显示笔记本资产的所有相关字段。但是,如果用户选择资产类型“打印机”,我希望表单显示打印机资产的相关字段 以下是我的资产模型: public class Asset { [Key] public int AssetID { get; set; } public int AssetMakeID { get; set; } public i

当用户选择资产类型时,我希望我的“创建”表单根据选择的资产类型显示不同的字段

例如:如果用户选择资产类型“Laptop”,我希望表单显示笔记本资产的所有相关字段。但是,如果用户选择资产类型“打印机”,我希望表单显示打印机资产的相关字段

以下是我的资产模型:

public class Asset
{
    [Key]
    public int AssetID { get; set; }
    public int AssetMakeID { get; set; }
    public int AssetTypeID { get; set; }
    public string User { get; set; }
    public int DepartmentID { get; set; }
    public string AssetModel { get; set; }
    public string AssetSerialNo { get; set; }
    public string PurchaseOrderNo { get; set; }
    public string Supplier { get; set; }
    public string WarrantyInfo { get; set; }
    public DateTime DatePurchased { get; set; }
    public string ComputerName { get; set; }
    public int CPUID { get; set; }
    public string RAM { get; set; }
    public string HardDrive { get; set; }
    public int OperatingSystemID { get; set; }
    public string OperatingSystemProductKey { get; set; }
显然,并非所有这些属性都适用于打印机资产

以下是我在资产控制器中的创建方法:

 // GET: Asset/Create
        public ActionResult Create()
        {
            ViewBag.AssetMakeID = new SelectList(db.AssetMake, "AssetMakeID", "Name");
            ViewBag.AssetTypeID = new SelectList(db.AssetType, "AssetTypeID", "Type");
            ViewBag.CPUID = new SelectList(db.CPU, "CPUID", "Name");
            ViewBag.DepartmentID = new SelectList(db.Department, "DepartmentID", "DepartmentName");
            ViewBag.OperatingSystemID = new SelectList(db.OperatingSyst, "OperatingSystemID", "Name");
            return View();
        }

        // POST: Asset/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "AssetID,AssetMakeID,AssetTypeID,User,DepartmentID,AssetModel,AssetSerialNo,PurchaseOrderNo,Supplier,WarrantyInfo,DatePurchased,ComputerName,CPUID,RAM,HardDrive,OperatingSystemID,OperatingSystemProductKey")] Asset asset)
        {
            if (ModelState.IsValid)
            {
                db.Asset.Add(asset);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.AssetMakeID = new SelectList(db.AssetMake, "AssetMakeID", "Name", asset.AssetMakeID);
            ViewBag.AssetTypeID = new SelectList(db.AssetType, "AssetTypeID", "Type", asset.AssetTypeID);
            ViewBag.CPUID = new SelectList(db.CPU, "CPUID", "Name", asset.CPUID);
            ViewBag.DepartmentID = new SelectList(db.Department, "DepartmentID", "DepartmentName", asset.DepartmentID);
            ViewBag.OperatingSystemID = new SelectList(db.OperatingSyst, "OperatingSystemID", "Name", asset.OperatingSystemID);
            return View(asset);
        }

根据用户选择的资产类型Id,如何在创建视图中显示字段?

我想到的第一个解决方案是返回每个资产Id的视图/部分视图。创建一个字典或数据库表来保存AssetId视图/部分视图的关系。我想到的第一个解决方案是返回每个资产Id的视图/部分视图。创建字典或数据库表以保存AssetId视图/部分视图之间的关系。