连接模型?

问题描述 投票:0回答:1

我想用另一个模型的数据加载另一个模型。

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
模型中进行的计算的价格。但每次我尝试这样做时都会得到一个空引用。我知道我需要在这里加载这个模型的数据。

有人可以帮忙吗?我是编程新手

c# entity-framework-core asp.net-core-mvc
1个回答
0
投票
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();
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.