c# - InvalidOperationException:无法创建“Microsoft.AspNetCore.Http.HttpContext”类型的实例
问题描述
当我尝试访问布局记录的用户配置文件时,会出现此错误。我想查看特定用户的详细信息,对其进行编辑或删除,因此我需要将 id 发送到视图,我正在尝试在控制器中使用此功能:
public IActionResult PerfilSocio( HttpContext contexto,int? id)
{
int x = Convert.ToInt32(contexto.Session.GetInt32("UserId"));
if (id == x)
{
foreach (var item in _context.Socios)
{
if (item.Idsocio == x)
{
var y = item;
return View(y);
}
}
}
else
{
return View("NaoEncontrado");
}
return View();
}
在我看来,我有这个:
@model WebApplication1.Models.Socios
@{
ViewData["Title"] = "PerfilSocio";
}
<style>
body {
padding-top: 0px;
background-color: gray;
background-image: url();
background-image: url();
background-repeat: no-repeat;
}
</style>
<h1 style="color:white;"> <b>LabGym</b> </h1>
<p style="text-align:right;color:white;">
<i class="material-icons">✍</i>
<a href="~/Mensagems/VerMensagem"> Mensagens </a>
</p>
<br />
<div>
<hr />
<dl class="row">
<dt class="col-sm-2">
@*@Html.DisplayNameFor(model => model.Fotografia)*@
</dt>
<dd class="col-sm-10">
<img src="~/Fotos/ + model.Fotografia " />
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Email)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Email)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Telefone)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Telefone)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Sexo)
</dt>
<dd class="col-sm-10">
@*@Html.DisplayFor(model => model.Sexo)*@
@if (@Html.DisplayNameFor(model => model.Sexo) == "0")
{
<p>Feminino</p>
}
else
{
<p>Masculino</p>
}
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Altura)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Altura)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.NomeUtilizador)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.NomeUtilizador)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.PesoInicial)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.PesoInicial)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.Estado)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.Estado)
</dd>
</dl>
</div>
<div>
<a asp-action="Edit" asp-route-id="@Model.Idsocio">Editar perfil</a> |
</div>
<br />
<br />
<br />
<br />
有人可以帮我纠正这个错误吗?
InvalidOperationException:无法创建“Microsoft.AspNetCore.Http.HttpContext”类型的实例。模型绑定的复杂类型不能是抽象类型或值类型,并且必须具有无参数构造函数。或者,给“contexto”参数一个非空的默认值。
解决方案
不要在您的操作中接受 HttpContext 作为参数,而是这样做。
public IActionResult PerfilSocio(int? id)
{
int x = Convert.ToInt32(HttpContext.Session.GetInt32("UserId"));
if (id == x)
HttpContext
只是 Controller 类向您公开的当前 HttpContext。
如果尚未添加,则需要在 startup.cs 文件中进行以下更改
在 ConfigureServices() 方法中添加相关服务。
services.AddDistributedMemoryCache();
services.AddSession();
将 UseSession 添加到 Configure() 方法作为第一条语句之一。
app.UseSession();
推荐阅读
- wordpress - 移动设备上的 Wordpress 粘滞菜单
- javascript - 在多个复选框选择上显示某些 div 不起作用
- javascript - 谷歌电子表格和 URI.js
- css - CSS:打破跨越到“表”
- c# - Unity 无法从函数外部访问随机数
- microsoft-translator - 作业/文件在培训中停留超过 24 小时
- c - 在C中的for循环内打印一次
- batch-file - 批处理 - 尝试回显大于号 (>) 时出现语法错误
- c# - 如何解决当前上下文中不存在名称“connectionclass”?
- azure-ad-b2c - Azure AD B2C 与 Restful API 集成