在ASP.NET Core MVC中使用标签助手
我正在使用列表来分配下拉列表。但它显示了此错误:
system.invalidoperationException:“实体类型'selectListGroup'需要定义一个主键。如果您打算使用无钥匙实体类型,请在“ on ModelCreating”中调用“ hasnokey”。有关无钥匙实体类型的更多信息,请参见 https://go.microsoft.com /fwlink/?linkId = 2141943。'
如何解决此错误?
这是我的代码:
namespace ComSoft.Models
{
public class Pending
{
[Key]
public int Id { get; set; }
[Required]
[DisplayName("SUPPLIER NAME")]
public string BP_SupplierName { get; set; }
[DisplayName("COUNTRY")]
public string BP_Country { get; set; }
[DisplayName("ITEM")]
//public string BP_Item { get; set; }
//[Key]
public List<SelectListItem> BP_Item { get; } = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "POLYESTER STAPLE FIBER" },
new SelectListItem { Value = "2", Text = "MECHINARY(TSUDAKOMA)" },
new SelectListItem { Value = "3", Text = "SIDE RECYCLING MACHINE" },
new SelectListItem { Value = "4", Text = "QUILTING MACHINE" },
new SelectListItem { Value = "5", Text = "INDUSTRIAL SEWING MACHINE" },
new SelectListItem { Value = "6", Text = "SEWING MACHINE NEEDLE" },
};
[DisplayName("VALUE")]
public int BP_Value { get; set; }
[DisplayName("P/I No.")]
public char BP_PINo { get; set; }
[DisplayName("ERP REMARKS")]
public string BP_ERPRemarks { get; set; }
[DisplayName("TRADE TERM")]
public string BP_TradeTerm { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("SHIP. DATE")]
public DateTime BP_ShipDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("PI RECEIVED DATE")]
public DateTime BP_PIReceivedDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("BANK APPLIED DATE")]
public DateTime BP_BankAppliedDate { get; set; }
[DisplayName("BUYER")]
public string BP_Buyer { get; set; }
[DisplayName("STYLE")]
public char BP_Style { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("L/C OPEN DATE")]
public DateTime BP_LCOpenDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("STATUS")]
public string BP_Status { get; set; }
[DisplayName("BTB LC NO.")]
public int BP_LCNo { get; set; }
[DisplayName("EXP LC/CONTRACT")]
public string BP_LCContract { get; set; }
[DisplayName("UD/AMEND")]
public string BP_UDAmend { get; set; }
[DisplayName("REMARKS")]
public string BP_Remarks { get; set; }
[DisplayName("PREPARED BY")]
public string BP_PrepaidBy { get; set; }
}
}
我的pendingController类属性是:
public IActionResult PendingUser1()
{
var model = new Pending();
model.BP_Item.ToList();
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult PendingUser1(Pending obj)
{
_db.BTB_Pending.Add(obj);
_db.SaveChanges();
return RedirectToAction("Index");
}
我的pendinguser1视图是:
<div class="form-group">
<label asp-for="BP_Item" class="control-label"></label>
<select id="BP_Item" name="BP_Item" class="form-control form-control-sm">
<option value="1">POLYESTER STAPLE FIBER</option>
<option value="2">MECHINARY(TSUDAKOMA</option>
<option value="3">SIDE RECYCLING MACHINE</option>
<option value="4">ZIPPER</option>
<option value="5">QUILTING MACHINE</option>
<option value="6">INDUSTRIAL SEWING MACHINE</option>
</select>
<span asp-validation-for="BP_Item" class="text-danger"></span>
</div>
I am using a list for assigning the dropdown. But it shows this error:
System.InvalidOperationException: 'The entity type 'SelectListGroup' requires a primary key to be defined. If you intended to use a keyless entity type, call 'HasNoKey' in 'OnModelCreating'. For more information on keyless entity types, see https://go.microsoft.com/fwlink/?linkid=2141943.'
How can I solve this error?
This is my code:
namespace ComSoft.Models
{
public class Pending
{
[Key]
public int Id { get; set; }
[Required]
[DisplayName("SUPPLIER NAME")]
public string BP_SupplierName { get; set; }
[DisplayName("COUNTRY")]
public string BP_Country { get; set; }
[DisplayName("ITEM")]
//public string BP_Item { get; set; }
//[Key]
public List<SelectListItem> BP_Item { get; } = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "POLYESTER STAPLE FIBER" },
new SelectListItem { Value = "2", Text = "MECHINARY(TSUDAKOMA)" },
new SelectListItem { Value = "3", Text = "SIDE RECYCLING MACHINE" },
new SelectListItem { Value = "4", Text = "QUILTING MACHINE" },
new SelectListItem { Value = "5", Text = "INDUSTRIAL SEWING MACHINE" },
new SelectListItem { Value = "6", Text = "SEWING MACHINE NEEDLE" },
};
[DisplayName("VALUE")]
public int BP_Value { get; set; }
[DisplayName("P/I No.")]
public char BP_PINo { get; set; }
[DisplayName("ERP REMARKS")]
public string BP_ERPRemarks { get; set; }
[DisplayName("TRADE TERM")]
public string BP_TradeTerm { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("SHIP. DATE")]
public DateTime BP_ShipDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("PI RECEIVED DATE")]
public DateTime BP_PIReceivedDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("BANK APPLIED DATE")]
public DateTime BP_BankAppliedDate { get; set; }
[DisplayName("BUYER")]
public string BP_Buyer { get; set; }
[DisplayName("STYLE")]
public char BP_Style { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("L/C OPEN DATE")]
public DateTime BP_LCOpenDate { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{dd-mm-yyyy}")]
[DisplayName("STATUS")]
public string BP_Status { get; set; }
[DisplayName("BTB LC NO.")]
public int BP_LCNo { get; set; }
[DisplayName("EXP LC/CONTRACT")]
public string BP_LCContract { get; set; }
[DisplayName("UD/AMEND")]
public string BP_UDAmend { get; set; }
[DisplayName("REMARKS")]
public string BP_Remarks { get; set; }
[DisplayName("PREPARED BY")]
public string BP_PrepaidBy { get; set; }
}
}
My PendingController Class property is:
public IActionResult PendingUser1()
{
var model = new Pending();
model.BP_Item.ToList();
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult PendingUser1(Pending obj)
{
_db.BTB_Pending.Add(obj);
_db.SaveChanges();
return RedirectToAction("Index");
}
And my PendingUSer1 view is:
<div class="form-group">
<label asp-for="BP_Item" class="control-label"></label>
<select id="BP_Item" name="BP_Item" class="form-control form-control-sm">
<option value="1">POLYESTER STAPLE FIBER</option>
<option value="2">MECHINARY(TSUDAKOMA</option>
<option value="3">SIDE RECYCLING MACHINE</option>
<option value="4">ZIPPER</option>
<option value="5">QUILTING MACHINE</option>
<option value="6">INDUSTRIAL SEWING MACHINE</option>
</select>
<span asp-validation-for="BP_Item" class="text-danger"></span>
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
[未绘制]
用于未从数据库编辑映射的属性:
应在下拉中选择ASP-FOR选择数据。
you can use
[NotMapped]
for properties you don't map from databaseedit:
should be selected data at asp-for in dropdown.