Stored procedures MCV核心下拉列表存储过程
我有一个模型,如下所示:Stored procedures MCV核心下拉列表存储过程,stored-procedures,drop-down-menu,asp.net-core,Stored Procedures,Drop Down Menu,Asp.net Core,我有一个模型,如下所示: public partial class RoutePartner { public Guid Id { get; set; } [Required] public Guid PartnerId { get; set; } [Required] public string RouteCompany { get; set; } } partnerId来自另一个具有Id和名称的表。我正试图构建我的CRUD表单,以加载合作伙伴列表并
public partial class RoutePartner
{
public Guid Id { get; set; }
[Required]
public Guid PartnerId { get; set; }
[Required]
public string RouteCompany { get; set; }
}
partnerId来自另一个具有Id和名称的表。我正试图构建我的CRUD表单,以加载合作伙伴列表并使其可用于表单。这是在MVC核心中实现这一点的最佳方法吗?我看到了许多.NET示例,但没有一个是针对CORE的
最后一点是,partner下拉列表应该由存储过程填充
谢谢
Dan您的类不必与数据库相同。为什么不创建一个名为Partner的类,该类具有parnteId和PartnerName?在RoutePartner类中,您可以使用Partner属性,而不仅仅是ID
Public class SomeViewModel //Used by your view
{
public RouteParnter {get; set;}
public ParnterList List<SelectListItem> {get; set;}
public static List<SelectListItem> PopulateDropdown()
{
List<SelectListItem> ls = new List<SelectListItem>();
DataTable someTable = Database.LoadParnters(); // Database is your data layer
foreach (var row in someTable.Rows)
{
ls.Add(new SelectListItem() { Text = row["PartnerName"].ToString();, Value = row["PartnerID"].ToString(); });
}
return ls;
}
}
public partial class RoutePartner
{
public Guid Id { get; set; }
[Required]
public Partner SomePartner { get; set; }
[Required]
public string RouteCompany { get; set; }
public RouteParnter(Guid id)
{
DataRow returnedRow = Database.LoadRouteParnter(id);
Id = id;
// Assuming your DataRow returned has all the info you need.
RouteCompany = row["RouteCompany"];
SomePartner = new Partner();
SomePartner.PartnerId = row["PartnerID"]; // cast to guid, just example
SomePartner.PartnerName = row["PartnerName"].ToString();
}
}
public class Partner
{
public Guid PartnerId { get; set; }
public string PartnerName { get; set; }
}
视图使用的公共类SomeViewModel//
{
公共路由通告{get;set;}
公共参数列表{get;set;}
公共静态列表填充下拉列表()
{
列表ls=新列表();
DataTable someTable=Database.LoadParnters();//数据库是您的数据层
foreach(someTable.Rows中的变量行)
{
添加(新SelectListItem(){Text=row[“PartnerName”].ToString();,Value=row[“PartnerID”].ToString();});
}
返回ls;
}
}
公共部分类RoutePartner
{
公共Guid Id{get;set;}
[必需]
公共伙伴SomePartner{get;set;}
[必需]
公共字符串RouteCompany{get;set;}
公用路由交换机(Guid id)
{
DataRow returnedRow=Database.LoadRouteParnter(id);
Id=Id;
//假设您返回的DataRow包含您需要的所有信息。
RouteCompany=行[“RouteCompany”];
SomePartner=新伙伴();
SomePartner.PartnerId=row[“PartnerId”];//转换为guid,仅举一个例子
SomePartner.PartnerName=行[“PartnerName”].ToString();
}
}
公共课伙伴
{
公共Guid PartnerId{get;set;}
公共字符串PartnerName{get;set;}
}
我将松散地耦合数据层。您可以使用ADO.NET或任何其他方式与数据库通信。我通常通过创建一个参数化的构造函数(比如获取要加载的ID)来调用数据层。数据层返回DataTable、DataRow、DataSet或自定义对象。在构造函数中,填充RouteParnter对象的值。同样,您也可以在ViewModel中创建一个列表。我想提供一个关于如何解决此问题的快速更新。我最终为EF创建了一个PartnerContext。创建后,在需要访问列表的控制器中,我将PartnerContext.ToList()放入ViewBag,然后使用ASP帮助程序加载列表 好主意,比我想的要好。如何填充模型RoutePartner?此外,我仍然不知道如何显示合作伙伴作为下拉列表。更新了一点。我没有包括数据层,也没有说明如何使用下拉列表。基本上是从数据层返回数据,加载到实体层,并有一个单独的ViewModel。再次感谢您的帮助。我不理解Database.LoadRoutePartner(id)方法。这是我写的东西,因为数据库类中不存在Database.LoadRoutePartner()。