ASP.NET Core是一个用于构建Web和云应用程序的精简,可组合和跨平台的框架。它是GitHub上完全开源的。 ASP.NET核心应用程序可以在Windows上运行完整的.NET Framework或更小的.NET Core,也可以在Linux和MacOS上运行.NET Core和Mono。
我有一个使用asp.net core 3.1 MVC的项目。 它包含一个带有禁用选择的表单。 我有一个使用asp.net core 3.1 MVC的项目。 它包含一个带有禁用选择的表单。 <div class="col-12 mb-3"> <select asp-for="SelectableItem" class="multi-select form-control" id="selectedItem" disabled="disabled" required="required"> <option value="">-- Select Item --</option> </select> <span asp-validation-for="SelectableItems" class="text-danger"></span> </div> 完全渲染的 html <select class="multi-select form-control" id="selectedItem" disabled="" required="required" data-val="true" data-val-required="Selected Item is required" name="SelectedItem"> <option value="">-- Select Item --</option> </select> 此选择将被禁用,直到用户选中一个框,然后填充选择元素并启用它,因为内容取决于已选择的复选框。 当用户尝试提交表单时,JQuery.Validation.Unobtrusive 的验证会验证除禁用字段之外的所有内容,因为该字段是必需的,但我也希望对其进行验证。 我只希望为该一种表单启用它,因此并不是整个应用程序中所有禁用的元素,但似乎无法让它工作。 我尝试了以下方法及其一些变体。 $('form').validator.setDefaults({ignore: null}) $('form').data('validator').settings.ignore = ""; $('form').validator.setDefaults({ignore: []}) $('#selectableItem').Validate().settings.not('[disabled]') 这些似乎都没有做任何事情,禁用的选择拒绝验证,并且所有其他建议(例如只读)不适用于选择元素,我也不希望它被全局允许,因为这会弄乱其他一些形式。 如果您确实想验证所有禁用的表单字段,则插件中的相关行是: .not( ":submit, :reset, :image, :disabled" ) 按照以下步骤操作: 在您的项目中找到jquery.validate.js并打开它。 按 Ctrl+F 找到包含 disabled 的行,然后对此行进行注释(或者您可以删除此行中的 :disabled): 如果你使用默认的ASP.NET Core项目,记得更改_ValidationScriptsPartial.cshtml文件,因为这个视图添加了jquery.validate.min.js的引用,但是你修改了jquery.validate.js(如果你仍然想使用min.js) ,请阅读 docs 并了解如何捆绑和缩小静态资源): <script src="~/lib/jquery-validation/dist/jquery.validate.js"></script> //change here... <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script> 这是一个工作演示: 模型(添加[Required]属性): public class Test { [Required] //add this public string SelectableItem { get; set; } } 查看(删除 required="required" 属性值对): @model Test <form method="post"> <input type="checkbox" /> <div class="col-12 mb-3"> <select asp-for="SelectableItem" class="multi-select form-control" id="selectedItem" disabled="disabled"> <option value="">-- Select Item --</option> </select> <span asp-validation-for="SelectableItem" class="text-danger"></span> </div> <input type="submit" value="Create" /> </form> @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} <script> $(document).ready(function () { $('input:checkbox').change(function () { if (this.checked) { //add to select list $("#selectedItem").append($("<option></option>") .attr("value", "1") .text("aa")); $("#selectedItem").append($("<option></option>") .attr("value", "2") .text("bb")); $("#selectedItem").append($("<option></option>") .attr("value", "3") .text("cc")); // $("selectedItem").prop('required', true); $("#selectedItem").removeAttr('disabled'); } else { //remove item from select list $("#selectedItem").empty().append($("<option></option>") .attr("value", "") .text("-- Select Item --")); $("#selectedItem").prop('disabled', true); } }); }); </script> } 结果:
Razor Pages OnPost 方法中的 Page() 方法有什么作用?
ASP.NET核心2 我有以下页面模型代码 公共类CreateModel:PageModel { 私有只读 IItemService _itemService; 公共 ItemCreateViewModel ItemModel { 获取;放; } p...
为什么我的 ASP.NET Core 5 Razor 页面在 IIS 上返回 404,但在 Visual Studio 中却没有?
我们有一个基于 .NET Core 5 构建的应用程序,有一个非常奇怪的问题。 95% 的 Web 应用程序运行完美,但有一个 Razor 页面会生成 404 - 但仅在部署到生产环境时
我的asp.net core应用程序部署到IIS时找不到favicon.ico
当我使用 IIS Express 在 Visual Studio 2017 中运行我的应用程序时,它能够在 wwwroot 文件夹中找到 favicon.ico。当它部署到服务器上的 IIS 时,它就找不到它。我认为它必须...
我正在尝试为我的 ASP.NET Core 项目添加和设置图标。 当我设置 Visual Studio 2017 自动创建的初始项目时,favicon.ico 文件位于 wwwroot 目录中...
如何在ASP.NET Core项目中显示wwwroot中保存的图片?
我正在使用 ASP.NET Core 和 Angular 开发一个多项目网站。 第一个项目只是 Microsoft Visual Studio 中的服务器端应用程序(后端代码、控制器和数据库链接)和
HTTP 错误 500.19 - 内部服务器错误 (0x8007000d)
我正在尝试将 .Net Core 5 WASM 应用程序部署到全新的 Windows Server 2019 虚拟服务器,并且遇到了非常通用的问题 无法访问所请求的页面,因为相关
我正在开发 .NET 5 上的一个项目,该系统有 2 个用户,他们有自己的管理面板;一种是给员工的,一种是给顾客的。员工管理员可以创建其他员工并为其分配角色...
IConfigurationBuilder.Build() 失败,文件以点开头
我有这段代码来解析配置文件: var builder = new ConfigurationBuilder().AddIniFile(filePath).Build(); 当 filePath 指向普通文件时,此代码有效,例如“C:\用户\M...
如何在 Azure DevOps 中正确使用 Azure Function Build 和部署多个项目
我正在使用 Azure 和基于 C# 的应用程序。我有 2 个应用程序服务、一个 Web 应用程序和一个函数应用程序。我的网络应用程序使用 dotnet 9.0,我的函数应用程序也使用 dotnet 9.0。我选择了定时器触发...
我知道不建议将 Kestrel Web 服务器暴露给外界,但是将 Kestrel 放置在 IIS 后面所造成的性能损失并不是一件可以轻易忽略的事情。 (事实上有人可能
为什么当我将图像复制到文件夹 wwwroot/images/ 时,我可以在 img html 标签中显示图像,而当我通过此代码保存图像时,图像不显示? if (image.ImageFile != null) { 字符串结果 = 路径。
为什么 ASP.NET Core 说我的表单字段是必需的,即使它没有定义为必需?
我正在使用 .NET 6 和 Fluent Validation,并且我有一个包含以下字段的表单: 我正在使用 .NET 6 和 Fluent Validation,并且我有一个包含以下字段的表单: <form method="post" asp-controller="Product" asp-action="Create" asp-antiforgery="true" autocomplete="off"> <label asp-for="Description">Description</label> <input asp-for="Description" type="text"> <span asp-validation-for="Description" class="error"></span> ... <button class="submit" name="button">Create</button> </form> ProductModel 是: public class ProductModel { public String Description { get; set; } // ... } ProductModel Fluent 验证器是: public class ModelValidator : AbstractValidator<ProductModel> { public ModelValidator() { RuleFor(x => x.Description) .Length(0, 200).WithMessage("Do not exceed 200 characters"); // ... } } 当我提交表单时,如果我将其留空,我会收到描述错误: 描述字段为必填项。 但我的验证器不需要描述。 这发生在所有领域。当未填写时,我会收到类似的错误。 我缺少什么,如何才能使它不需要? 这似乎是由于与模型验证更改相关的问题造成的;特别是在 .NET 6 中。我找到了一个文档链接,它可以比我更好地解释它,但我也会提供代码实现:Microsoft docs builder.Services.AddControllers( options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true); //Removes the required attribute for non-nullable reference types. 我直接从 MS 文档中获取了此代码,因此如果它不能解决您的问题,则可能还有其他原因。 以下是 Microsoft .NET 文档中关于此问题的非常详细的解释: 获取或设置一个值,该值确定是否禁止对不可为空引用类型的属性和参数进行RequiredAttribute的推断。如果 false(默认值),则所有不可空引用类型的行为都将如同已应用 [Required] 一样。如果true,这种行为就会被抑制;出于验证目的,可空引用类型和不可空引用类型的行为相同。 解决这个问题有两种方法,一种是全局的,一种是部分的。 您可以设置: builder.Services.AddControllersWithViews(options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true) 在您的 Program.cs (.NET 6) 中。使用此方法后,所有属性都可以为空。 另一种方法是在你的模型中,你可以像这样设置属性: public class ProductModel { public String? Description { get; set; } // ... } ? 表示该属性可以为空。在此方法中,您可以指定哪些属性可以为空。 当我尝试以 The {fieldName} field is required 的形式使用我的 asp.net API 时,收到了大量验证错误 发现这是由于 C# 8 中的 Nullable Reference Types 造成的 我通过 .csproj 文件选择退出此行为 <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <Nullable>disable</Nullable> </PropertyGroup>
我正在使用 .NET 6 和 Fluent Validation,并且我有一个包含以下字段的表单: 我正在使用 .NET 6 和 Fluent Validation,并且我有一个包含以下字段的表单: <form method="post" asp-controller="Product" asp-action="Create" asp-antiforgery="true" autocomplete="off"> <label asp-for="Description">Description</label> <input asp-for="Description" type="text"> <span asp-validation-for="Description" class="error"></span> ... <button class="submit" name="button">Create</button> </form> ProductModel 是: public class ProductModel { public String Description { get; set; } // ... } ProductModel Fluent 验证器是: public class ModelValidator : AbstractValidator<ProductModel> { public ModelValidator() { RuleFor(x => x.Description) .Length(0, 200).WithMessage("Do not exceed 200 characters"); // ... } } 当我提交表单时,如果我将其留空,我会收到描述错误: 描述字段为必填项。 但我的验证器不需要描述。 这发生在所有领域。当未填写时,我会收到类似的错误。 我错过了什么? 做了一些挖掘,这似乎是由于与模型验证更改相关的问题造成的;特别是在 .NET 6 中。我找到了一个文档链接,它可以比我更好地解释它,但我也会提供代码实现:Microsoft docs builder.Services.AddControllers( options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true); //Removes the required attribute for non-nullable reference types. 我直接从 MS 文档中获取了此代码,因此如果它不能解决您的问题,则可能还有其他原因。 MC文档中对此问题有非常详细的解释: 获取或设置一个值,该值确定是否推断 不可为空的属性和参数的RequiredAttribute 引用类型被抑制。如果为 false(默认值),则所有 不可为 null 的引用类型的行为就像 [Required] 已 应用。如果为真,这种行为将被抑制;可为空的引用 类型和不可为 null 的引用类型的行为相同 验证的目的。 解决这个问题有两种方法,一种是全局的,一种是部分的。 您可以设置: builder.Services.AddControllersWithViews(options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true) 在你的Program.cs(.Net6)中,使用此方法后,所有属性都可以为空。 另一种方法是在你的模型中,你可以像这样设置属性: public class ProductModel { public String? Description { get; set; } // ... } ?表示该属性可以为空,在该方法中,您可以指定哪些属性可以为空。 当我尝试以 The {fieldName} field is required 的形式使用我的 asp.net API 时,收到了大量验证错误 发现这是由于 C# 8 中的 Nullable Reference Types 造成的 我通过 .csproj 文件选择退出此行为 <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <Nullable>disable</Nullable> </PropertyGroup>
基于证书的身份验证失败,出现 ERR_BAD_SSL_CLIENT_AUTH_CERT
我正在尝试按照官方文档使用 ASP.NET Core 9 实现基于证书的身份验证:在 ASP.NET Core 中配置证书身份验证 我想出了这个基本的
如何更改 Razor Pages 表单的 POST 上的 [BindProperty] 值?
我正在使用一个剃刀页面创建一个表单(我知道这可能不是一个好主意,但我正在尝试做一些[不那么]快速原型设计。基本上,第一步是用户输入一堆数据...
Entity Framework Core 的 UpdateRange 方法不起作用
这里使用Entity Framework Core的UpdateRange方法来更新多条记录,但是不起作用。 我的代码是: var dept1 = 新部门() { ID = 8, 名称=“新设计&...
Visual Studio Docker Compose - 在调试会话结束后停止并删除容器
我有一个 ASP.NET Core Web 应用程序,我已将日志记录添加到 ElasticSearch 和 Kibana。 我在 Windows 主机上运行它,容器是 Linux。 docker-compose 文件设置为第一个...
为什么我在 ASP.NET Core 中向 Facebook 请求长期令牌时收到“验证码格式无效”?
我正在构建一个 ASP.NET Core 应用程序,该应用程序与 Facebook 集成,以将短期令牌交换为长期令牌。 提出请求时,我不断收到以下错误: 状态C...
在“System.Collections.Generic.List”类型中发现多个构造函数错误
错误 InvalidOperationException:多个构造函数接受所有给定的 已在 type 中找到参数类型 'System.Collections.Generic.List`1[hdsportal.Pages.GestaoAlertas]'。 应该有...