【发布时间】:2020-06-28 16:31:36
【问题描述】:
我有 2 张桌子:
FoodItem(FoodID,Name,etc..)
Invoice(InvoiceId,FoodId (foreign key of FoodID),etc..)
我首先创建了一个 DbContext 和一个模型类 Invoice.cs,然后我向控制器添加了一个脚手架项,在该控制器中为发票的 Create、Delete、Details、Edit 和 Index 创建了视图。
我正在尝试让 Create.cshtml 将外键 FoodId 的下拉列表放在下拉列表中的 FoodItem 表中,而不是手动输入 ID。
我有以下几点:
在 InvoicesController 我添加了:
public static List<Invoice> Invoice()
{
List<Invoice> jt = new List<Invoice>();
string connection = "Persist Security Info=False;Integrated Security=true;Initial Catalog=invoicesystem;Data Source=.;Connection Timeout=100000;";
using (SqlConnection sqlconn = new SqlConnection(connection))
{
using (SqlCommand sqlcomm = new SqlCommand("select FoodItem.Name from FoodItem full join Invoice on Invoice.FoodId=FoodItem.FoodID"))
{
using(SqlDataAdapter sda = new SqlDataAdapter())
{
sqlcomm.Connection = sqlconn;
sqlconn.Open();
sda.SelectCommand = sqlcomm;
SqlDataReader sdr = sqlcomm.ExecuteReader();
while(sdr.Read())
{
Invoice invoice = new Invoice();
invoice.FoodId = sdr["Name"].ToString();
jt.Add(invoice);
}
}
return jt;
}
}
}
我通过调用函数在Controller类的Create()方法中添加了一个ViewData:
public IActionResult Create()
{
ViewData["Food Name"] = Invoice();
return View();
}
这是我正在使用的模型类:
namespace RoleBaseAuth.Models
{
public class Invoice
{
[Key]
public int InvoiceId { get; set; }
[ForeignKey("AspNetUsers")]
public string UserId { get; set; }
[ForeignKey("FoodItem")]
public string FoodId{ get; set; }
public int quantity { get; set; }
public double totalsum { get; set; }
}
}
在 Create.cshtml 文件中,我使用 ViewData 定义了变量,并将 FoodId 的常规替换为以下格式的选择列表:
@{
ViewData["Title"] = "Create";
var invoice = (List<Invoice>)ViewData["Food Name"];
}
<div class="form-group">
<label asp-for="FoodId" class="control-label"></label>
<select asp-for="FoodId" class="form-control" asp-items='new SelectList(invoice,"Name")'></select>
<span asp-validation-for="FoodId" class="text-danger"></span>
</div>
【问题讨论】:
-
你期待什么?
Invoice.ToString()是RoleBaseAuth.Models.Invoice。要么覆盖发票中的 ToString 方法,要么告诉 Razor 要显示哪个 Invoice 属性。 -
对不起,我是这方面的初学者,如何让它显示实际的数据库结果? @LegacyCode
标签: c# asp.net asp.net-mvc asp.net-core