我有两个模型Invoice和Client,它们有一对多的关系。我的问题是当我尝试创建新发票时,modelstate变为false,因为未填充Client对象的必填字段。我试图设置默认值,例如int property {get; set;} = 1;
但是当我尝试检索关系模型时,这会导致覆盖属性值。我是asp.net的新手,我们将不胜感激。
这是我的客户端型号代码:
public class Client
{
public int ClientId { get; set; }//Primary key
[Required]
[Display(Name = "Client/Company Name")]
public string Name { get; set; }
//.....
public List<Invoice> Invoices { get; set; }
}
发票型号:
public class Invoice
{
public int InvoiceId { get; set; }//Primary key
[Required]
[Display(Name = "Client/Company Name")]
public int ClientId { get; set; }//Foreign key
public Client client { get; set; }
//....
}
我保存发票的代码:
[HttpPost]//Save quote & redirect to edit quote
public IActionResult Create(Invoice quote)
{
ViewData["Title"] = "Create Quotation";//Set title of the view!
if (ModelState.IsValid)//If quote is validated to true.
{
_context.Invoices.Add(quote);//insert quote
_context.SaveChanges();
//Redirect to edit page to add items to the invoice
return RedirectToAction("Edit", new { id = quote.InvoiceId });
}
//...
}
我的代码用于检索具有客户名称的发票
public IActionResult Index()
{
ViewData["Title"] = "Quotations";//Set title of the view!
//Return with array of all quotations.
return View(_context.Invoices.Include(i => i.client).Where(i => i.isQuote == true).ToArray());
}
任何提示或帮助都将不胜感激。
答案 0 :(得分:0)
找到一个更简单的解决方案:
只需添加virtual
关键字和GG
:
public class Invoice
{
public int InvoiceId { get; set; }//Primary key
[Required]
[Display(Name = "Client/Company Name")]
public int ClientId { get; set; }//Foreign key
public virtual Client client { get; set; }
//....
}