我正在开发一个系统,它将使用大量的下拉列表和重复列表。因此,为了避免重复代码,我创建了一个DropDownManagerClass()
,这将允许我从系统中的任何位置调用 Customers 下拉列表:
public class DropDownManager:BaseManagerClass
{
public DropDownManager(String connectionString)
: base(connectionString)
{
}
public IEnumerable<SelectListItem> GetCustomerDD()
{
this.OpenConnection();
IEnumerable<SelectListItem> dropDown = this._context.Customers.Select(m => new SelectListItem { Text = m.Description, Value = m.CustomerID.ToString() });
this.CloseConnection();
return dropDown;
}
}
然后我通过调用这个一次性管理器类来填充我的模型,你会看到我正在处理对象以清理与数据库的连接。
DropDownManager dropdown = new DropDownManager(Global.ConnectionString);
IEnumerable<SelectListItem> customers = dropdown.GetCustomerDD();
IEnumerable<SelectListItem> suppliers= dropdown.GetSuppliersDD();
model.CustomersDD= customers;
model.SuppliersDD= suppliers;
dropdown.Dispose();
当我调试时,我注意到客户和供应商都有一条 SQL 语句。因此,当谈到我的观点时,我认为这是它试图执行 SQL 以获取数据的地方,但是我已经处理dropdown
它会引发错误。如果我删除dropdown.Dispose()
,则代码有效。
我的观点
@Html.DropDownListFor(m => m.Customer.CustomerID, Model.CustomersDD, new { @class = "large" })
无论如何我可以用数据填充我的模型并有效地处理这个管理器吗?
编辑当我.ToList()
从客户那里选择之后打电话时,我可以看到模型现在有结果集,但在视图中它仍然给出错误