假设我有两张桌子。 广告资源和供应商。广告资源有三个字段:名称, inventory_no 和 supplier_no ,供应商有两个字段:名称, supplier_no
在我的库存视图中,是否可以添加从单独的耗材模型中填充@Html.DropDownListFor()
的单元格?
我无法弄清楚如何使用Controller / View完成它,所以我在考虑使用AJAX
示例:
Name | Inv_no | Suppliers
------- | ------ | ------------------------------
Pen | 101 | DDL populated of all suppliers
Pencil | 102 | DDL populated of all suppliers
Erase | 103 | DDL populated of all suppliers
查看:
<table>
<tr>
<th>Name</th>
<th>Inventory_No</th>
<th>Suppliers</th>
<tr>
@foreach(var item in Model)
{
<td>@Html.DisplayFor(modemItem => item.name)</td>
<td>@Html.DisplayFor(modemItem => item.inventory_no)</td>
<td><!-- @Html.DropDownListFor() ? --></td>
}
</table>
控制器:
public virtual JsonResult getListOfSuppliers(int? supplier_no)
{
using (db)
{
var vendors = db.vendors.Select(c => new
{
Value = c.supplier_no,
Text = c.name
});
return Json(vendors, JsonRequestBehavior.AllowGet);
}
}
答案 0 :(得分:1)
是的,这是可能的。
您的模型应该像:
public class ViewModel
{
public string Name { get; set; }
public int InventoryNo { get; set; }
public int SupplierNo { get; set; }
public IList<SelectListItem> Suppliers {get;set;}
}
控制器:
public virtual ActionResult getListOfSuppliers(int? supplier_no)
{
using (db)
{
var model = new ViewModel
{
Name = <name value>,
InventoryNo = <name value>,
Suppliers = db.vendors.Select(c => new SelectListItem
{
Value = c.supplier_no,
Text = c.name
}).ToList()
};
return View(model);
}
}
在视图中:
<td><!-- @Html.DropDownListFor(x => x.SupplierNo, Model.Suppliers, new { @class = "form-control" }) ? --></td>
答案 1 :(得分:0)
不是。
最简单的方法是创建一个viewmodel,然后在视图中使用该模型。 viewmodel类将由控制器生成,然后传递给视图。在此视图模型对象中,将是库存项目以及供应对象的IEnumerable列表。
这样的效果会让球滚动:
public class InventoryViewModel
{
public string Name { get; set; }
public int Inventory_No { get; set; }
public int Supplier_No { get; set; }
public List<Supplies>
{
get
{
return <your DAL>.Supplies.All().ToList();
}
}
}
答案 2 :(得分:0)
您不需要使用AJAX,只需更改传入视图的模型即可。模型为List<Item>
,Item
定义为:
string Name
int Inv_No
IEnumerable<SelectListItem> Suppliers
这样,每个项目都有自己的供应商列表,您可以使用DropDownFor为Suppliers字段中的每个项目创建下拉列表。