ASP.NET Core MVC是一个轻量级的表示框架,用于使用ASP.NET Core创建动态网站。它允许创建基于控制器的MVC站点,或查看基于模型的Razor页面。 MVC包括路由,模型绑定和验证,过滤器,Web API和Razor视图引擎等功能。
“@Html.DisplayFor(modelItem => item.FirstName)”和“@item.FirstName”有什么区别?
@Html.DisplayFor(modelItem => item.FirstName) 和 @item.名字 哪种方式是首选方式?哪个最好以及如何?
在 ASP.NET Core MVC 中刷新 cookie 票证
我正在使用 .NET Core 和 OpenID Connect,并使用 SlidingExpiration = true 和 ExpireTimeSpan = 20 分钟配置 cookie。 我观察到,当我在应用程序中处理任务时......
ASP.NET Core 6 MVC Web 应用程序:无法注销
我无法注销,即使执行注销操作后,我的 User.Identity.IsAuthenticated 仍然显示“true”。 我的Program.cs文件是这样的 builder.Services.AddAuthentication(
在 ASP.NET Core MVC 中高效地按 Id 显示数据以及关联的多对多表数据
我的网站有很多帖子,每个帖子的详细信息页面都会显示相关信息以及该帖子所标记的标签[多对多数据]。 代码: 公共异步任务 我的网站有很多帖子,每个帖子的详细信息页面都会显示相关信息以及该帖子所标记的标签[多对多数据]。 代码: public async Task<IActionResult> Detail(int id) { var Post = await _postInterface.GetByIdAsync(id); var Tag = await _context.Posts.Include(p => p.PostTags) .ThenInclude(t => t.Tag).ToListAsync(); return View(Post); } var Post 根据所选的 id 显示数据库数据。 var Tag从多对多关系数据库表初始化。 我的问题: 有没有办法只初始化内容而不使用这里的var Tag =,因为它不是必需的? await _context.Posts.Include(p => p.PostTags).ThenInclude(t => t.Tag).ToListAsync(); 为了解释您所看到的情况,请对代码进行分解: var Post = await _postInterface.GetByIdAsync(id); 这一行从 _postInterface 类中获取单个帖子。这通常称为存储库模式,并且通常有一个缺点,即它不能轻松地促进诸如急切加载调用者可能想要的相关数据之类的事情。 var Tag = await _context.Posts.Include(p => p.PostTags) .ThenInclude(t => t.Tag).ToListAsync(); 这一行实际上并不是在加载一个或多个标签,它实际上是在加载ALL帖子,并将所有包含的标签加载到“Tag”变量和DbContext的跟踪缓存中。 (非常糟糕!!!) 这似乎有效的原因是因为在调用“读取所有内容”之后,DbContext 现在正在跟踪所有帖子和标签,因此当您返回加载的“帖子”时,对其 PostTags/Tag 的代理引用可以是当使用代码尝试访问它们时,由 DbContext 填充。如果删除该 var Tags = ....,则 Context 不会跟踪它们,并且您会得到 #null,或者如果启用了延迟加载,只要 DbContext 未释放,它就会在访问时获取它们。 你真正想要的是: public async Task<IActionResult> Detail(int id) { var post = await _context.Posts .Include(p => p.PostTags) .ThenInclude(t => t.Tag) .AsNoTracking() .SingleAsync(p => p.Id == id); return View(post); } 这告诉 EF 我们想要一篇文章,但要包含该文章的 postTags 和 Tags。 AsNoTracking() 调用是可选的,但在这种情况下使其速度更快一点,因为它告诉 EF DbContext 不需要跟踪这些实体。如果您返回分离的实体,则 Context 不需要跟踪实体,因为 DbContext 无论如何都应该在请求结束时被处置。例如,如果您碰巧将 .AsNoTracking() 添加到原始 var Tags = .... 查询中,您实际上会发现您的代码停止工作,因为当您返回“时,您的代码依赖于跟踪缓存行为来填充引用”帖子”。 您必须修改 GetByIdAsync 方法才能获取带有相关标签的选定帖子。 public async Task<Post> GetByIdAsync(int id) { return await _context.Posts .Include(p => p.PostTags) .ThenInclude(t => t.Tag) .FirstOrDefaultAsync(p => p.Id == id); } 如果您想保留 GetByIdAsync 的当前实现,建议创建另一个方法,例如:具有上述实现的 GetPostWithTagsAsync 。不要忘记在您的 PostInterface 中添加方法(签名,不带方法主体)。 public async Task<Post> GetPostWithTagsAsync(int id) { return await _context.Posts .Include(p => p.PostTags) .ThenInclude(t => t.Tag) .FirstOrDefaultAsync(p => p.Id == id); } public interface IPostInterface { Task<Post> GetPostWithTagsAsync(int id); }
我试图让视图中的按钮使用按钮的 onClick 事件调用模型中的方法,但我不确定如何实现此操作。该按钮根本不执行任何操作。 这是我的观点: ...
在 ASP.NET Core MVC 中为 HttpResults 指定 JsonSerializerOptions
使用 ASP.NET Core MVC,可以通过多种方式返回结果。 ASP.NET Core Web API 中的控制器操作返回类型: 具体类型 IActionResult ... Http结果 但是当控制器
同一 IIS 服务器上的 ASP.NET Core MVC 和 Web API
我有两个应用程序: ASP.NET Core MVC Web 应用程序 ASP.NET Core Web API 当我在计算机上运行应用程序时,一切正常,MVC 应用程序可以向我的 API 发出 get/post http 请求。 当我
在 smarterasp.net 上发布 ASP.NET Core Web 应用程序 - exe 文件
我正在尝试在 smarterasp.net 上的 Visual Studio 中发布示例 Web 应用程序,但我无法完成发布过程,因为 smarterasp 不允许使用免费帐户加载 exe 文件...
如何在ASP.NET Core 8.0 MVC站点中使用重写功能?
我正在将 ASP.NET Core 8.0 MVC 网站部署到 Windows Server 操作系统上的 IIS 服务器。 假设该站点具有以下基本 URL: https://www.example.com/mysite/ 当我对我的我们进行一些更新时...
为什么链接到另一个站点会导致 ASP.NET Core MVC 出现错误 [已关闭]
我在两个不同的网站上工作。两者都是 ASP.NET Core MVC 站点,并且均由 GoDaddy 托管。如果我发表一篇,那就没问题了。然后我发布第二篇。一旦我这样做了,我就会从
我阅读了无数的教程、文章和问题。 我无法弄清楚为什么 [Authorize(Roles = "SuperAdmin")] 或任何其他角色不起作用。无论如何,每个人都会得到 403...
在 ASP.NET Core MVC 中为多对多关系表创建数据
我正在使用多对多关系为我的网站帖子创建标签。我按照 Microsoft 文档设法使用实体框架创建 PostTags 数据库表。 我现在想插入...
我正在使用 ASP.NET Core MVC、Identity 和 SignalR 创建一对一聊天应用程序。但是,我遇到了一个问题,从列表中选择用户并向他们发送
搭建 Identity 时出现 ASP.NET Core 7 MVC 错误
我正在构建一个 ASP.NET Core 7 MVC 应用程序,我打算向我的 Web 应用程序添加登录和注册功能。遗憾的是,在尝试为项目构建身份后,我收到此错误:
我正在使用多对多关系为我的网站帖子创建标签。我按照 Microsoft 文档设法使用实体框架创建 PostTags 数据库表。 我想插入标签
就像标题所说,我想显示特定类型的图像。我有一个名为 Skills 的模型,其中有一个类型对象,用户可以在“认证”和“
基于 UserRole ASP.NET Core MVC Web 应用程序的路由页面
在我的Web应用程序中,登录后如何根据UserRole路由用户? UserRole 是从 JWT 令牌中检索的,我还将其放入 API 响应中。该令牌是由我的授权机构颁发的...
EF Core 7 和 ASP.NET Core MVC razor 视图不使用部分类中的元数据属性
我必须假设这是一个错误,因为我找不到任何解决方案。我在专用于数据访问的程序集中有 EF Core 7 支架部分类。 这是生成的: 命名空间 EF。
ASP.NET Core MVC 抛出应用服务“您正在查找的资源已被删除、已更名或暂时不可用。”
我创建了一个 ASP.NET Core 6 MVC 应用程序。在本地运行良好。但是一旦部署到应用程序服务,我就会收到以下错误。 您要找的资源已被删除...
Visual Studio 2022 调试器认为我更改了代码并想要热重载
编辑:下面提供了很好的诊断信息,但问题是我正在运行 Visual Studio 2022 17.3。 .NET 7 需要版本 17.4,我刚刚安装了它。一旦我安装了