Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc .NET核心MVC控制器错误_Asp.net Mvc_Asp.net Core_Invalidoperationexception - Fatal编程技术网

Asp.net mvc .NET核心MVC控制器错误

Asp.net mvc .NET核心MVC控制器错误,asp.net-mvc,asp.net-core,invalidoperationexception,Asp.net Mvc,Asp.net Core,Invalidoperationexception,我最近反向设计了一个表来创建一个模型和一个上下文类。然后,我从VS2017脚手架创建了一个控制器和一个视图。当我尝试加载我的页面时,我收到以下错误: InvalidOperationException:无法解析类型的服务 “TestSolutions.Models.TraderRoute.TraderContext”,同时尝试 激活“TestSolutions.Controller.RoutePartnersController” Microsoft.Extensions.Internal.Ac

我最近反向设计了一个表来创建一个模型和一个上下文类。然后,我从VS2017脚手架创建了一个控制器和一个视图。当我尝试加载我的页面时,我收到以下错误:

InvalidOperationException:无法解析类型的服务 “TestSolutions.Models.TraderRoute.TraderContext”,同时尝试 激活“TestSolutions.Controller.RoutePartnersController”

Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp,类型类型,类型要求者,布尔isDefaultParameterRequired)

控制器

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);
    }
}
公共类RoutePartnersController:控制器
{
私有只读TraderContext\u上下文;
公共路由PartnersController(TraderContext上下文)
{
_上下文=上下文;
}
//获取:RoutePartners
公共异步任务索引()
{
返回视图(wait_context.RoutePartner.ToListAsync());
}
//获取:RoutePartners/Details/5
公共异步任务详细信息(Guid?id)
{
if(id==null)
{
返回NotFound();
}
var routePartner=await\u context.routePartner
.SingleOrDefaultAsync(m=>m.PartnerId==id);
如果(routePartner==null)
{
返回NotFound();
}
返回视图(routePartner);
}
//获取:RoutePartners/Create
public IActionResult Create()
{
返回视图();
}
//POST:RoutePartners/Create
//若要防止套印攻击,请启用要绑定到的特定属性,例如
//更多详细信息请参见http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建([Bind(“Id,PartnerId,RouteCompany,RouteCode,Dark,Light,Contra,CreateDate,CreateBy”)]RoutePartner RoutePartner
{
if(ModelState.IsValid)
{
RoutePartnerId=Guid.NewGuid();
_添加(routePartner);
wait_context.SaveChangesAsync();
返回操作(“索引”);
}
返回视图(routePartner);
}
//获取:RoutePartners/Edit/5
公共异步任务编辑(Guid?id)
{
if(id==null)
{
返回NotFound();
}
var routePartner=wait _context.routePartner.SingleOrDefaultAsync(m=>m.PartnerId==id);
如果(routePartner==null)
{
返回NotFound();
}
返回视图(routePartner);
}
//发布:RoutePartners/Edit/5
//若要防止套印攻击,请启用要绑定到的特定属性,例如
//更多详细信息请参见http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务编辑(Guid id,[Bind(“id,PartnerId,RouteCompany,RouteCode,Dark,Light,Contra,CreateDate,CreateBy”)]RoutePartner RoutePartner
{
if(id!=routePartner.PartnerId)
{
返回NotFound();
}
if(ModelState.IsValid)
{
尝试
{
_更新(routePartner);
wait_context.SaveChangesAsync();
}
catch(DbUpdateConcurrencyException)
{
如果(!routePartner存在(routePartner.PartnerId))
{
返回NotFound();
}
其他的
{
投掷;
}
}
返回操作(“索引”);
}
返回视图(routePartner);
}
//获取:RoutePartners/Delete/5
公共异步任务删除(Guid?id)
{
if(id==null)
{
返回NotFound();
}
var routePartner=await\u context.routePartner
.SingleOrDefaultAsync(m=>m.PartnerId==id);
如果(routePartner==null)
{
返回NotFound();
}
返回视图(routePartner);
}
//发布:RoutePartners/Delete/5
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共异步任务已确认(Guid id)
{
var routePartner=wait _context.routePartner.SingleOrDefaultAsync(m=>m.PartnerId==id);
_context.RoutePartner.Remove(RoutePartner);
wait_context.SaveChangesAsync();
返回操作(“索引”);
}
私有布尔路由器存在(Guid id)
{
返回_context.RoutePartner.Any(e=>e.PartnerId==id);
}
}
以下是我的看法:

@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>
@model TestSolutions.Models.TraderRoute.RoutePartner
@{ViewData[“Title”]=“Details”;}
细节
路由器管理员

@DisplayNameFor(model=>model.Id) @DisplayFor(model=>model.Id) @DisplayNameFor(model=>model.Dark) @DisplayFor(model=>model.Dark) @DisplayNameFor(model=>model.Lit) @DisplayFor(model=>model.Lit) @DisplayNameFor(model=>model.conta) @DisplayFor(model=>model.conta) @DisplayNameFor(model=>model.CreateDate) @DisplayFor(model=>model.CreateDate) @DisplayNameFor(model=>model.CreateBy) @DisplayFor(model=>model.CreateBy) @ActionLink(“编辑”,“编辑”,新建{/*id=Model.PrimaryKey*/})|返回列表
似乎未在DI(IoC)容器中注册
TraderContext
。请务必登记

public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        ...

        services.AddDbContext<TraderContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
                // Remove this if you use SQL 2012 or higher.
                b => b.UseRowNumberForPaging()));
        ...
    }
}    

您可以分享控制器和视图吗?刚刚添加,谢谢。您还可以演示如何在
启动
课程中向DI注册
TraderContext
吗?您是对的!!!!!非常感谢,我忽略了注册过程。现在页面已正确加载。但是,当我单击编辑链接时,我收到一个“页面未找到错误”。编辑链接是从脚手架构建的。知道我做错了什么吗
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

Scaffold-DbContext "Server=SERVER;Database=DATABASE;Trusted_Connection=True;MultipleActiveResultSets=true" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models