Ich habe vor kurzem eine Tabelle reverse entwickelt, um ein Modell und eine Kontextklasse zu erstellen. Ich habe dann einen Controller und eine Ansicht von VS 2017 Gerüst erstellt. Wenn ich versuche, meine Seite zu laden erhalte ich folgende Fehlermeldung:.NET Core MVC Controller Fehler
InvalidOperationException: Unable to resolve service for type 'TestSolutions.Models.TraderRoute.TraderContext' while attempting to activate 'TestSolutions.Controllers.RoutePartnersController'.
Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)
-Controller.
public class RoutePartnersController : Controller
{
private readonly TraderContext _context;
public RoutePartnersController(TraderContext context)
{
_context = context;
}
// GET: RoutePartners
public async Task<IActionResult> Index()
{
return View(await _context.RoutePartner.ToListAsync());
}
// GET: RoutePartners/Details/5
public async Task<IActionResult> Details(Guid? id)
{
if (id == null)
{
return NotFound();
}
var routePartner = await _context.RoutePartner
.SingleOrDefaultAsync(m => m.PartnerId == id);
if (routePartner == null)
{
return NotFound();
}
return View(routePartner);
}
// GET: RoutePartners/Create
public IActionResult Create()
{
return View();
}
// POST: RoutePartners/Create
// To protect from overposting attacks, please 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([Bind("Id,PartnerId,RouteCompany,RouteCode,Dark,Lit,Contra,CreateDate,CreateBy")] RoutePartner routePartner)
{
if (ModelState.IsValid)
{
routePartner.PartnerId = Guid.NewGuid();
_context.Add(routePartner);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(routePartner);
}
// GET: RoutePartners/Edit/5
public async Task<IActionResult> Edit(Guid? id)
{
if (id == null)
{
return NotFound();
}
var routePartner = await _context.RoutePartner.SingleOrDefaultAsync(m => m.PartnerId == id);
if (routePartner == null)
{
return NotFound();
}
return View(routePartner);
}
// POST: RoutePartners/Edit/5
// To protect from overposting attacks, please 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(Guid id, [Bind("Id,PartnerId,RouteCompany,RouteCode,Dark,Lit,Contra,CreateDate,CreateBy")] RoutePartner routePartner)
{
if (id != routePartner.PartnerId)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(routePartner);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!RoutePartnerExists(routePartner.PartnerId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction("Index");
}
return View(routePartner);
}
// GET: RoutePartners/Delete/5
public async Task<IActionResult> Delete(Guid? id)
{
if (id == null)
{
return NotFound();
}
var routePartner = await _context.RoutePartner
.SingleOrDefaultAsync(m => m.PartnerId == id);
if (routePartner == null)
{
return NotFound();
}
return View(routePartner);
}
// POST: RoutePartners/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(Guid id)
{
var routePartner = await _context.RoutePartner.SingleOrDefaultAsync(m => m.PartnerId == id);
_context.RoutePartner.Remove(routePartner);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
private bool RoutePartnerExists(Guid id)
{
return _context.RoutePartner.Any(e => e.PartnerId == id);
}
}
Hier ist meine Ansicht:
@model TestSolutions.Models.TraderRoute.RoutePartner
@{ViewData["Title"] = "Details";}
<h2>Details</h2>
<div>
<h4>RoutePartner</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.Id)
</dt>
<dd>
@Html.DisplayFor(model => model.Id)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Dark)
</dt>
<dd>
@Html.DisplayFor(model => model.Dark)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Lit)
</dt>
<dd>
@Html.DisplayFor(model => model.Lit)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Contra)
</dt>
<dd>
@Html.DisplayFor(model => model.Contra)
</dd>
<dt>
@Html.DisplayNameFor(model => model.CreateDate)
</dt>
<dd>
@Html.DisplayFor(model => model.CreateDate)
</dd>
<dt>
@Html.DisplayNameFor(model => model.CreateBy)
</dt>
<dd>
@Html.DisplayFor(model => model.CreateBy)
</dd>
</dl>
</div>
<div>
@Html.ActionLink("Edit", "Edit", new { /* id = Model.PrimaryKey */ }) | <a asp-action="Index">Back to List</a>
</div>
Könnten Sie bitte den Controller teilen und sehen? –
Gerade hinzugefügt, danke – Dann055
Könnten Sie auch zeigen, wie Sie 'TraderContext' mit DI in Ihrer 'Startup'-Klasse registrieren? – Ignas