ASP.NET Core MVC是一个轻量级的表示框架,用于使用ASP.NET Core创建动态网站。它允许创建基于控制器的MVC站点,或查看基于模型的Razor页面。 MVC包括路由,模型绑定和验证,过滤器,Web API和Razor视图引擎等功能。
如何在 ASP.NET Core 8 MVC 中为区域创建路由、默认操作名称并在斜杠后指定 id(相对于“?id=”)?
如何在 ASP.NET Core 8 MVC 中为区域中的页面创建路由,默认操作名称,同时允许在斜杠后指定 id(相对于“?id=”)?我读过很多文章...
安全性:ASP.NET Core 8 MVC 中的表单与 AJAX 请求
我正在查看 ASP.NET Core 8 MVC 项目的订阅页面。 在安全性方面,这两种方法是否兼容? 我确实更喜欢 AJAX,因为它让我可以拥有 JS 烤面包机......
在 ASP.NET Core 2.0 Web Api 中返回“原始”json
AFAIK 在 ASP.NET Core Web Api 中返回数据的标准方法是使用 IActionResult 并提供例如OkObject 结果。这对于对象来说效果很好,但是如果我获得了一个 JSON 字符串呢?
在我的 ASP.NET Core 应用程序中,我有一个场景,我需要动态解析工厂内的作用域服务来处理不同的操作。这是我当前设置的概述和...
如何在 ASP.NET Core 8 MVC 中使用 graph api 获取用户个人资料照片
我正在为我的项目使用 ASP.NET Core 8 MVC。我当前的任务涉及使用 Microsoft Graph API 从 Azure Active Directory 检索用户的个人资料照片。 为了实现这一目标,我已经开始...
我正在尝试习惯 ASP.NET Core MVC,但在用户角色方面遇到了问题。 我成功注册了管理员角色帐户后,但是当我调试时,返回以下行代码...
在我的 ASP.NET Core MVC 应用程序中,我有一个注册页面,它使用模型类。我正在使用 Dapper 进行数据库连接。该表格运行良好,没有任何问题。我需要添加另一个模型,以便我可以
重定向 Microsoft Identity Platform 访问在 ASP.NET Core 中被拒绝
我觉得我已经阅读了 Stack Overflow 上的每一篇文章,但没有任何内容符合我的情况。我有一个 ASP.NET Core 网站,它使用 Microsoft Identity Platform 进行身份验证。这是由
在 ASP.NET Core MVC Web 应用程序中使用 ASP.NET Core Web API 时出现问题
我收到以下错误消息 状态代码 404 未找到方法 从 ASP.NET Core MVC Web 应用程序读取 API 时。 这是我的 API 代码: [HttpGet("参与者ID")] 公共异步任务...
如何使用 MediatR 为同一请求模型获取不同的响应类型?
我正在尝试了解 MediatR 的工作原理。以前从未使用过这个库。下面的代码不是实际的生产代码。它仅用于理解目的。 假设我有两个 RequestHandler。每个
我代表了很多产品,但所有这些在控制器中的返回是我使用 ASP.NET Core 6 MVC 的第一个产品
我正确地代表了许多项目,但它在控制器中返回相同的对象,特别是数据库中的第一项 在控制器中: 公共 IActionResult AddToBasket(ProductsModel 产品) { ...
我正在使用 .NET Core MVC(dotnet 版本 1.0.4)编写一个 Web 应用程序。 我想将 ViewData 对象中的 Dictionary 从控制器传递到视图并将其绑定到 元素... 我正在使用 .NET Core MVC(dotnet版本1.0.4)编写一个网络应用程序。 我想从控制器传递 Dictionary<string, string> 对象中的 ViewData 来查看并将其绑定到 <select> 元素。 这是我想要得到的结果: 我尝试了两种方法来实现它。 第一种方法 控制器代码 Dictionary<string, string> animals = new Dictionary<string, string>(); animals.Add("1", "cat"); animals.Add("2", "dog"); animals.Add("3", "bunny"); ViewData["animals"] = new SelectList(animals); 视图代码 <select asp-for="Animal_id" asp-items="(SelectList)@ViewData["animals"]" class="form-control"></select> 这给了我这个结果 第二种方法 控制器代码 Dictionary<string, string> animals = new Dictionary<string, string>(); animals.Add("1", "cat"); animals.Add("2", "dog"); animals.Add("3", "bunny"); ViewData["animals"] = new SelectList(animals.Select(r => new SelectListItem { Text = r.Key, Value = r.Value })); 视图代码 一样。 这给了我这个结果: 显然,我不明白这个概念,尽管我觉得我走在正确的轨道上。你能帮我吗 - 需要做什么才能从我的第一张照片中获得结果(<option>s 和 values)? 您使用 SelectList 构造函数的重载,其中参数为 IEnumerable。该重载会调用集合中每个项目的 .ToString() 方法,并且因为它们是复杂的对象,所以您会得到您所看到的结果。仅当您的收藏是IEnumerable<string>时,这种重载才真正有用。 您需要使用接受 dataValueField 和 dataTextField 参数的重载,它定义了用于选项值和显示文本的属性。 Dictionary<string, string> animals = new Dictionary<string, string>(); animals.Add("1", "cat"); animals.Add("2", "dog"); animals.Add("3", "bunny"); ViewData["animals"] = new SelectList(animals, "Key", "Value"); 另请注意,在第二个示例中,您已经生成了一个 IEnumerable<SelectListItem> 要使用 new SelectList(...) 从第一个示例创建相同的 IEnumerable<SelectListItem> 是毫无意义的额外开销,它可以是 ViewData["animals"] = animals.Select(r => new SelectListItem { Text = r.Key, Value = r.Value })); 在视图中asp-items="(IEnumerable<SelectListItem>)@ViewData["animals"]" 使用当前代码,您正在创建一个 SelectList,但未指定数据值字段和数据文本字段(您正在使用的集合的)。 您可以使用带有这 2 个参数的 SelectList 重载。 ViewData["animals"] = new SelectList(animals.Select(r => new SelectListItem { Value = r.Key.ToString(), Text = r.Value }),"Value","Text"); 但这是我们正在执行的不必要的代码。您已经在创建一个 SelectListItem 列表(以传递给 SelectList)。您应该简单地使用该集合来构建选择元素。 var animals = new Dictionary<string, string>(); animals.Add("1", "cat"); animals.Add("2", "dog"); animals.Add("3", "bunny"); ViewData["animals"] = animals.Select(r => new SelectListItem { Value = r.Key.ToString(), Text = r.Value }); 在你看来 <select asp-for="SomePropertyName" asp-items="@(ViewData["animals"] as IEnumerable<SelectListItem>)"> </select> 如果您使用 ViewBag 而不是 ViewData,则不需要显式转换。 ViewBag.AnimalList= animals.Select(r => new SelectListItem { Value = r.Key.ToString(), Text = r.Value }); 和 <select asp-for="Name" asp-items="@ViewBag.AnimalList"> </select>
ASP.NET Core MVC:扩展RequiredAttribute的工作方式
我想扩展RequiredAttribute如何与强类型视图模型一起工作。例如,我有一个参考数据视图模型,如下所示: 公共类ReferenceDataViewModel { 公开...
(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)ASP.NET Core 8.0.1
当我尝试连接数据库时发生此错误 当我发出命令(更新数据库)时,会发生此错误: 我已经下载了软件包: Microsoft.EntityFrameworkCore 微软。
发生致命错误。找不到所需的库 libhostfxr.dylib
我正在使用 .NET 5.0 开发 ASP.NET 项目。对于数据库创建,我运行了命令 dotnet 工具安装 --global dotnet-ef 安装后,当我运行此命令时: 点网EF 我得到了...
用户登录ASP.NET Core Identity期间出现空异常
我对 ASP.NET Core 相当陌生。我正在开发一个简单的社交媒体网络应用程序,并决定将身份添加到我现有的用户中。我在登录用户时遇到问题。问题发生在 b...
ASP.NET Core 8.0 MVC、数据库优先、C#:尝试通过迁移添加身份
我有一个名为 context1 的 DbContext,我向其中添加了 IdentityDbContext 的依赖项。我还在数据访问层项目中添加了实体身份所需的 NuGet 包。 搭建脚手架后...
在.Net 8 Web应用程序中覆盖signin-google端点
我有一个应用程序,按照此处定义的方式使用外部登录到Google。登录时,它会回调我的应用程序到内置的“/signin-google”端点。我的意图...
我的 ASP.NET Core 按钮根本不发送任何内容(ASP.NET Core MVC 和 C#)
我已经编写了这个按钮,但它不能正常工作,它没有调用控制器文件中的 create HTTP 方法: 故事看一下: @模型IEnumerable 我已经编写了这个按钮,但它不能正常工作,它没有调用控制器文件中的 create HTTP 方法: 讲讲看: @model IEnumerable<MyApplication.Models.Clients> <div class="row"> <div class="col-md-4"> <form asp-action="Create" method="post"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label for="CODE" class="control-label">Code:</label> <input name="CODE" class="form-control" /> </div> <div class="form-group"> <label for="NAME" class="control-label">Name:</label> <input name="NAME" class="form-control" /> </div> <div class="form-group"> <input type="submit" value="Insert" class="btn btn-primary" /> </div> </form> </div> </div> <table class="table" id="Tabla4"> <thead> <tr> <th> @Html.DisplayNameFor(model => model.CODE) </th> <th> @Html.DisplayNameFor(model => model.NAME) </th> <th></th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.CODE) </td> <td> @Html.DisplayFor(modelItem => item.NAME) </td> <td> </td> </tr> } </tbody> </table> 单击“插入”按钮后,它不会执行任何操作,我的 Create 方法甚至没有在控制器文件中调用(空参数) public ActionResult Create([Bind] Clients clients) { try { if (ModelState.IsValid) { dbContext.InsertData(clients); return RedirectToAction("Index"); } return View(clients); } catch { return View(); } } 一直在搜索并试图解决它,但似乎我做得不正确,我在这里迷失了方向。我应该纠正什么? 可以帮助我吗? 您的视图收到 MyApplication.Models.Clients 的集合,当您单击提交按钮时,您将 Clients 的集合发送到控制器。 因此,如果您想将 Clients 类型的对象从视图发送到控制器,您应该创建另一个接收 MyApplication.Models.Clients 模型的操作和视图,如下所示。 创建视图: @model MyApplication.Models.Clients <div class="row"> <div class="col-md-4"> <form asp-action="Create" method="post"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class="form-group"> <label for="CODE" class="control-label">Code:</label> <input name="CODE" class="form-control" /> </div> <div class="form-group"> <label for="NAME" class="control-label">Name:</label> <input name="NAME" class="form-control" /> </div> <div class="form-group"> <input type="submit" value="Insert" class="btn btn-primary" /> </div> </form> </div> </div> 控制器: [HttpGet] public ActionResult Create() { return View(); } [HttpPost] public ActionResult Create(Clients clients) { try { if (ModelState.IsValid) { dbContext.InsertData(clients); return RedirectToAction("Index"); } return View(clients); } catch { return View(); } } 我希望问题能得到解决。将属性 [HttpPost] 添加到控制器方法就可以了。如果也这样做了,请尝试添加 .cshtml 视图中未使用的剩余模型属性元素并保持隐藏。所以会绑定模型。 我的例子:如果文件未上传到输入,并单击按钮。这不是击中帖子方法。但当我将 .cshtml 中的表单内的元素添加为隐藏时,它就起作用了。我能够单击按钮并进入后控制器方法。
要使用IFormFile,我们必须安装Microsoft.AspNetCore.Http包,但它在.NET 8中已被弃用。如何解决这个问题? 我尝试添加 IFormFile 来上传图像。但要添加 IFormFile,我