我想用另一个模型的数据加载另一个模型。
namespace MvcCar2.Models
{
public class Contract
{
public int Id { get; set; }
public int CustomerId { get; set; }
public Customer Customer { get; set; }
public int CarListId{get;set;}
public CarList CarList { get; set; }
[DataType(DataType.Date)]
public DateTime AusleihDatum{ get; set; }
[DataType(DataType.Date)]
public DateTime AbgabeDatum { get; set; }
public int KilometerstandAnfang { get; set; }
public int KilometerstandEnde { get; set; }
public double GesamtPreis
{
get
{
//hier carlist einrn wert zuweisen
return CarList.GesamtPreis();
}
}
}
}
在
public double GesamtPreis
属性中,我尝试返回在 CarList
模型中进行的计算的价格。但每次我尝试这样做时都会得到一个空引用。我知道我需要在这里加载这个模型的数据。
有人可以帮忙吗?我是编程新手
namespace MvcCar2.Controllers
{ 公共类 ContractsController :控制器 { 私有只读 MvcCar2Context _context;
public ContractsController(MvcCar2Context context)
{
_context = context;
}
// GET: Contracts
public async Task<IActionResult> Index()
{
var mvcCar2Context = _context.Contract.Include(c => c.CarList).Include(c => c.Customer).Include(c => c.CarList.CarGroup);
return View(await mvcCar2Context.ToListAsync());
}
// GET: Contracts/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null || _context.Contract == null)
{
return NotFound();
}
var contract = await _context.Contract
.Include(c => c.CarList)
.Include(c => c.Customer)
.Include(c=> c.CarList.CarGroup)
.FirstOrDefaultAsync(m => m.Id == id);
if (contract == null)
{
return NotFound();
}
return View(contract);
}
// GET: Contracts/Create
public IActionResult Create(int id)
{
var CarListfromDB = _context.CarList.ToList();
var CarListList = CarListfromDB.Select(Car => new
{
Id = Car.Id,
DisplayText1 =
$"{Car.Hersteller}-{Car.Modell}-{Car.Farbe}-{Car.Kennzeichen}-{Car.CarGroupId}"
});
ViewData["CarListId"] = new SelectList(CarListList, "Id", "DisplayText1");
var CustomerfromDB = _context.Customer.ToList();
var CustomerList = CustomerfromDB.Select(Customer => new
{
Id =Customer.Id,
DisplayText2 =
$"{Customer.Name}-{Customer.Vorname}-{Customer.EMail}-{Customer.AdressId}"
});
ViewData["CustomerId"] = new SelectList(CustomerList, "Id", "DisplayText2");
return View();
}
// POST: Contracts/Create
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(int id, [Bind("Id,CustomerId,CarListId,AusleihDatum,AbgabeDatum,GesamtPreis,KilometerstandAnfang,KilometerstandEnde")] Contract contract)
{
//if (ModelState.IsValid)
//{
_context.Add(contract);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
//}
var CarListfromDB = _context.CarList.ToList();
var CarListList = CarListfromDB.Select(Car => new
{
Id = Car.Id,
DisplayText1 =
$"{Car.Hersteller}---{Car.Modell}---{Car.CarGroupId}---{Car.Kennzeichen}---{Car.Farbe}"
});
ViewData["CarListId"] = new SelectList(CarListList, "Id", "DisplayText1");
var CustomerfromDB = _context.Customer.ToList();
var CustomerList = CustomerfromDB.Select(Customer => new
{
Id = Customer.Id,
DisplayText2 =
$"{Customer.Name}---{Customer.Vorname}---{Customer.EMail}---{Customer.AdressId}"
});
ViewData["CustomerId"] = new SelectList(CustomerList, "Id", "DisplayText2");
return View(contract);
}
// GET: Contracts/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null || _context.Contract == null)
{
return NotFound();
}
var contract = await _context.Contract.FindAsync(id);
if (contract == null)
{
return NotFound();
}
var CarListfromDB = _context.CarList.ToList();
var CarListList = CarListfromDB.Select(Car => new
{
Id = Car.Id,
DisplayText1 =
$"{Car.Hersteller}---{Car.Modell}---{Car.CarGroupId}---{Car.Kennzeichen}---{Car.Farbe}"
});
ViewData["CarListId"] = new SelectList(CarListList, "Id", "DisplayText1", contract.CarListId);
var CustomerfromDB = _context.Customer.ToList();
var CustomerList = CustomerfromDB.Select(Customer => new
{
Id = Customer.Id,
DisplayText2 =
$"{Customer.Name}---{Customer.Vorname}---{Customer.EMail}---{Customer.AdressId}"
});
ViewData["CustomerId"] = new SelectList(CustomerList, "Id", "DisplayText2", contract.CustomerId);
return View(contract);
}
// POST: Contracts/Edit/5
// To protect from overposting attacks, enable the specific properties you want to bind to.
// For more details, see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,CustomerId,CarListId,AusleihDatum,AbgabeDatum,GesamtPreis,KilometerstandAnfang,KilometerstandEnde")] Contract contract)
{
if (id != contract.Id)
{
return NotFound();
}
//if (ModelState.IsValid)
//{
try
{
_context.Update(contract);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!ContractExists(contract.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
//}
var CarListfromDB = _context.CarList.ToList();
var CarListList = CarListfromDB.Select(Car => new
{
Id = Car.Id,
DisplayText1 =
$"{Car.Hersteller}---{Car.Modell}---{Car.CarGroupId}---{Car.Kennzeichen}---{Car.Farbe}"
});
ViewData["CarListId"] = new SelectList(CarListList, "Id", "DisplayText1", contract.CarListId);
var CustomerfromDB = _context.Customer.ToList();
var CustomerList = CustomerfromDB.Select(Customer => new
{
Id = Customer.Id,
DisplayText2 =
$"{Customer.Name}---{Customer.Vorname}---{Customer.EMail}---{Customer.AdressId}"
});
ViewData["CustomerId"] = new SelectList(CustomerList, "Id", "DisplayText2", contract.CustomerId);
return View(contract);
}
// GET: Contracts/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null || _context.Contract == null)
{
return NotFound();
}
var contract = await _context.Contract
.Include(c => c.CarList)
.Include(c => c.Customer)
.Include (c => c.CarList.CarGroup)
.FirstOrDefaultAsync(m => m.Id == id);
if (contract == null)
{
return NotFound();
}
return View(contract);
}
// POST: Contracts/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
if (_context.Contract == null)
{
return Problem("Entity set 'MvcCar2Context.Contract' is null.");
}
var contract = await _context.Contract.FindAsync(id);
if (contract != null)
{
_context.Contract.Remove(contract);
}
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
private bool ContractExists(int id)
{
return (_context.Contract?.Any(e => e.Id == id)).GetValueOrDefault();
}
}
}