В моей базе данных есть три таблицы: Superdealer
, subdealer
и commission
- Идентификатор в Superdealer:
SuperdealerId
- Идентификатор в субдилере:
subdealerId
- Идентификатор в комиссии:
commissionId
.Он имеет два внешних ключа SuperdealerId
и subdealerId
. Имеется раскрывающийся список, в котором можно выбрать, назначать ли комиссию субдилеру или самому супердилеру.Если я выбираю субдилера, значение должно быть присвоено subdealerid, а superdealerid должен быть нулевым.И если я выберу superdealer, ему должно быть присвоено значение, а subdealerid должен быть нулевым.
Я попробовал следующий код, но этот код не относится к моей проблеме.
modelBuilder .Entity<Commission>()
.HasOptional<SuperDealer>(u => u.SuperDealer)
.WithOptionalPrincipal();
modelBuilder .Entity<Commission>()
.HasOptional<SubDealer>(u => u.SubDealer)
.WithOptionalPrincipal();
public class Commission
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CommissionId { get; set; }
//[Display(Name ="Selected Dealer Name")]
//public string DealerName { get; set; }
[Range(0, double.MaxValue, ErrorMessage = "Please enter valid
commission")]
[Display(Name = "Commission Percentage")]
public double CommissionPercentage { get; set; }
[DataType(DataType.Date)]
[Display(Name = "Commission Start Date")]
public DateTime CommissionStart { get; set; }
[Display(Name = "First Commission")]
[Range(0, int.MaxValue, ErrorMessage = "Please enter valid number")]
public int firstCommissionPart { get; set; }
[Display(Name = "Second Commission")]
[Range(0, int.MaxValue, ErrorMessage = "Please enter valid number")]
public Nullable<int> secondCommissionPart { get; set; }
[Display(Name = "Third Commission")]
[Range(0, int.MaxValue, ErrorMessage = "Please enter valid number")]
public Nullable<int> thirdCommissionPart { get; set; }
[ForeignKey("SubDealerId")]
public SubDealer SubDealer { get; set; }
[Display(Name = "Select Sub dealer")]
public int? SubDealerId { get; set; }
[ForeignKey("SuperDealerId")]
public SuperDealer SuperDealer { get; set; }
[Display(Name = "Select Super dealer")]
public int? SuperDealerId { get; set; }
}
Это код создания комиссии дилерам
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "CommissionId,CommissionPercentage,CommissionStart,firstCommissionPart,secondCommissionPart,thirdCommissionPart,SubDealerId,SuperDealerId")] Commission commission, FormCollection fc)
{
//var superdealer = Request.Form["SuperDealerId"];
//var subdealer = Request.Form["SubDealerId"];
int superdealer = int.Parse(fc["SuperDealerId"]);
int subdealer = int.Parse(fc["SubDealerId"]);
if (ModelState.IsValid)
{
if (superdealer > 0 && subdealer > 0)
{
commission.SubDealerId = subdealer;
}
else if (superdealer > 0)
{
commission.SuperDealerId = superdealer;
}
db.Commissions.Add(commission);
db.SaveChanges();
return RedirectToAction("Index");
}
List<SelectListItem> plans = new List<SelectListItem>();
plans.Add(new SelectListItem { Text = "QM Plan", Value = "1", Selected = true });
plans.Add(new SelectListItem { Text = "Customized Plan", Value = "2" });
ViewBag.Plans = plans;
ViewBag.SubDealerId = new SelectList(db.SubDealers, "SubDealer_No", "Name", commission.SubDealerId);
ViewBag.SuperDealerId = new SelectList(db.SuperDealers, "SuperDealer_No", "Name", commission.SuperDealerId);
return View(commission);
}
То, что я хочу, это
- Под супердилером может быть много субдилеров.Существует раскрывающийся список, в котором я могу выбрать, назначать ли комиссию субдилеру или самому супердилеру.Если я выбираю субдилера, значение должно быть присвоено subdealerid, а superdealerid должен быть нулевым.и если я выбираю superdealer, ему должно быть присвоено значение, а subdealerid должен быть нулевым.
Когда я нажимаю, я получаю следующую ошибку: https://imgur.com/sWsrKnZ