C# 根据下拉列表选择显示表单字段
当用户选择资产类型时,我希望我的“创建”表单根据选择的资产类型显示不同的字段 例如:如果用户选择资产类型“Laptop”,我希望表单显示笔记本资产的所有相关字段。但是,如果用户选择资产类型“打印机”,我希望表单显示打印机资产的相关字段 以下是我的资产模型: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
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视图/部分视图之间的关系。