Blazor InputSelect 中显示第一个选项,但值为 null

2023-12-04

我在 Razor 组件中遇到了 InputSelect 元素的奇怪行为。 在我的输入表单上,我有几个与模型(合作伙伴)绑定的字段。我以下拉选择的形式放置了其中一些字段。因为绑定字段的 (PartnerCategory) 值是 id(整数),所以我从数据库中获取一个查找表,其名称与所选 id 相对应。

在页面上,我可以看到下拉列表中的所有名称。但是,当我尝试将记录从表单插入到数据库时,它会引发 SQL 异常,因为 InputSelect 将列表中的第一个值视为 NULL。需要明确的是 - 下拉列表中没有空白值,并且显示所有名称。它只是将其值设为 NULL。因为数据类型是整数,所以它会将 NULL 转换为零。由于我的表中没有为零的 id,因此插入命令失败。

下面是我的简化代码

<EditForm Model="@partner">
    <InputSelect @bind-Value="partner.PartnerCategoryId">
        @if (categoryList != null)
        {
            @foreach (var item in categoryList.OrderBy(x => x.PartnerCategoryId))
            {
                <option value="@item.PartnerCategoryId">@item.Name</option>
            }
        }
    </InputSelect>
</EditForm>

@code {
    Partner partner = new Partner();
    private IEnumerable<PartnerCategory> categoryList;

    protected override async Task OnInitializedAsync()
    {
        categoryList = await CategoryService.GetAllAsync();
    }   
}

我该如何处理这个问题?在从数据库获取数据之前,它是否将值绑定到模型?


要解决此问题,您可以添加<option value="">Select...</option>在你的代码中是这样的:

 <InputSelect @bind-Value="partner.PartnerCategoryId">
    @if (categoryList != null)
    {
        <option value="">Select...</option>
        @foreach (var item in categoryList.OrderBy(x => x.PartnerCategoryId))
        {
            <option value="@item.PartnerCategoryId">@item.Name</option>
        }
    }
</InputSelect>

而在你的PartnerCategory模型根据需要定义 PartnerCategoryId。请注意,PartnerCategoryId 的类型可为 null:int?

[Required]
public int? PartnerCategoryId {get; set;}

除非用户选择了一个值,否则这将阻止“提交”您的表单

要测试新的更改: 添加OnValidSubmit归因于你的EditForm组件并将其值设置为“HandleValidSubmit"

Add a HandleValidSubmit方法,像这样:

private void HandleValidSubmit()
{
   // Put code here to save your record in the database
}

在 EditForm 底部添加一个提交按钮:

<p><button type="submit">Submit</button></p>

运行您的应用程序,然后点击“Submit“按钮...正如您所看到的,表单未“提交”,并且选择元素的边框被涂成红色。

这是代码的完整版本:

<EditForm Model="@partner" OnValidSubmit="HandleValidSubmit">
    <InputSelect @bind-Value="partner.PartnerCategoryId">
        @if (categoryList != null)
        {
            <option value="">Select...</option>
            @foreach (var item in categoryList.OrderBy(x => x.PartnerCategoryId))
            {
                <option value="@item.PartnerCategoryId">@item.Name</option>
            }
        }
    </InputSelect>

     <p><button type="submit">Submit</button></p>
</EditForm>

@code {
    Partner partner = new Partner();
    private IEnumerable<PartnerCategory> categoryList;

    protected override async Task OnInitializedAsync()
    {
        categoryList = await CategoryService.GetAllAsync();
    } 

    private void HandleValidSubmit()
    {
       Console.WriteLine("Submitted");
    }  
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blazor InputSelect 中显示第一个选项,但值为 null 的相关文章

  • AWS DynamoDB 与 ASP .Net Core 3.1.0 Identity 2.2.0

    我必须将 Asp net core Identity 2 2 0 与 AWS DynamoDB 集成 我正在使用 net core 版本 3 1 我搜索了参考资料 但没有找到任何好的参考资料 请帮我 我得到了一份参考资料https gith
  • 参数绑定到 ASP.NET MVC Core 中的路由或查询字符串

    我正在将 ASP NET MVC NET Framework Web 应用程序迁移到 ASP NET MVC Core 3 1 该应用程序是公司内部的 我们正在借此机会清理一些 API 路由 使它们更加 RESTful 例如 api Val
  • Net Core ILogger 值不能为空

    我收到记录器值不能为空 我正在尝试解决这个问题 也许是通过依赖注入来解决的 在单元测试和程序中的其他地方都会收到错误 我是否正确进行依赖注入 Expected
  • 不支持的媒体类型 ASP.NET Core Web API

    在前端 我使用 Angular 从表单收集一些数据并将其发送到我的服务器端控制器 如下图所示 我在控制器和服务上获取数据 scope newData 但是当它到达服务器时 我收到以下错误 不支持的媒体类型 并且我的 newData 为空 我
  • C# - 使用 Entity Framework Core 3 HasConversion 将字段转换为 .Net Core 3.1 中的 JSON

    我试图在项目中的所有模型之间动态完成转换 数据库上下文 cs protected override void OnModelCreating ModelBuilder modelBuilder var entityTypes modelBu
  • 从 ASP.NET Core 2.2 迁移到 3.1

    我们目前有一个ASP NET 核心 2 2我们想要迁移到的网络应用程序3 1 因为它较新并且包含一些增强功能 有关于迁移的文章2 2 to 3 0但不是2 2 to 3 1 是升级到的首选迁移途径3 0先升级到3 1 之间似乎有很多不兼容的
  • 如何在 Blazor 视图中显示图像

    我正在尝试在 Blazor 视图中显示图像 但它不起作用并且仅显示图像图标 img src Images watch jpg width 300px 我的图像位于此路径中wwwroot Images watch jpg 您可能遇到了这个错误
  • 在 ASP.NET Core 的中间件中注入服务

    我想根据 HTTP 标头值注入服务 所以我有 2 个类 DbDataProvider 和 InMemDataProvider 它们都是从 IDataProvider 实现的 每当进行 API 调用时 客户端都会传递一个标头 该标头确定是需要
  • 在ConfigureServices中注入依赖

    在我的 ASP Net Core 应用程序中 我需要在以下位置注入一些依赖项 在我的例子中是一个存储库 ConfigureServices method 问题是该方法不允许使用多个参数来注入依赖项 该怎么办呢 这是我的代码 public v
  • ASP.NET Core MVC防伪

    尝试在核心 mvc 项目中打开防伪功能 但没有成功 做了什么 添加过滤器以自动检查每个 POST 请求的防伪令牌 services AddMvc o gt o Filters Add new AutoValidateAntiforgeryT
  • 如何使用Dot net core WEB API实现文件上传?

    我正在开发 ASP DOT NET core Web api 我需要发送多个附件 我尝试如下
  • 如何从 Main 中获取 IConfiguration?

    以下仅用于说明目的 我有一个secrets json包含以下内容 Message I still know what you did last summer 我需要使用以下播种器为数据库播种 public static class Seed
  • aspnetcore 出现角度错误 NodeInitationException:节点调用在 60000 毫秒后超时

    我在用着yo generator aspnetcore spa一旦我运行应用程序 我就遇到了问题 处理请求时发生未处理的异常 NodeIncationException 节点调用在 60000 毫秒后超时 您可以通过设置更改超时持续时间 N
  • 如何在 VS2017/2015 中打开 .xproj 文件

    我有一个带有扩展名的 NET core 项目 xproj 当我在VS 2017中打开项目时 项目文件 xproj migrated to csproj 如何打开 xproj 文件 Visual Studio 2017 2015 我需要安装任
  • ASP.NET Core 基于自定义策略的授权 - 不清楚

    好的 ASP NET Core 中基于自定义策略的授权 我有点理解这个新身份框架的想法 但仍然不是 100 清楚你可以用它实现什么 假设我们在 HomeController 中有一个名为 List 的 Action 此操作将查询并显示数据库
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 在 blazor 中添加全局使用指令

    命名空间 MyClassLibrary Models 中不存在类型或命名空间名称 XXX 是否缺少程序集引用 该错误参考此 BlazorProject MyPager azor g cs 在这种情况下我得到了这个错误 创建了一个类型的文件
  • 使用 Github Actions 进行部署

    我在用Github作为我的源代码控制 并使用Github 操作作为我的 CI CD 解决方案 我在某处有一个专用的 Windows Server 它接受发表我的仓库的版本 我有一个 Github Action 它可以构建 测试 发布和部署
  • 将登录重定向到控制器操作

    从使用个人用户帐户的 ASP NET 5 Web 应用程序模板开始 我成功地使用 Microsoft 帐户进行外部身份验证 当用户单击 登录 时 他们将被重定向到ExternalLogin in AccountController像这样

随机推荐

  • 解密销售合作伙伴 API 报告

    我正在尝试解密销售合作伙伴 api 报告 但在解密时我在 decipher final 附近收到此错误 Node Error error 0606506D digital envelope routines EVP DecryptFinal
  • Android 自定义字体 - 适用于 Actionbar、Toast、Dialogs 等系统组件

    我正在开发翻译成不支持的语言的应用程序 设备上缺少字体 因此 我向应用程序添加了字体 并更改了所有 TextView EditText 按钮的字体 我还可以更改 WebView 中的字体 但现在我需要更改所有系统组件的字体 操作栏 标题下拉
  • java 如何让定时器返回时间

    一旦我开始运行计时器 如何让它返回已经过去了多长时间 这个定时器可以设置可见吗 作为第二个参数传递给 Timer 构造函数的对象实现了 ActionListener 通过该接口 它会在计时器发出的每个警报时接收对其 actionPerfor
  • 使用 Python“请求”模块进行代理

    只是一个关于优秀的简短而简单的介绍RequestsPython 的模块 我似乎无法在文档中找到变量 代理 应包含的内容 当我向它发送一个带有标准 IP PORT 值的字典时 它拒绝了它要求的 2 个值 所以 我猜 因为这似乎没有在文档中涵盖
  • gprof 的时间采样问题

    我正在尝试使用 gprof 分析一些用 g 编译的 C 代码 包括选项 pg 然而 尽管该程序在我的计算机上运行需要 10 15 分钟 CPU 已满 但 gprof 生成的表中的 time cumulative Seconds 和 self
  • JQuery - 替换悬停时的图像

    我有一个图像文件夹 在这个文件夹中 我有两种类型的几张图像 一png和一个gif 显示的图像是png版本 在图像悬停时 我需要将其替换为它的gif版本 当悬停消失时 将png版本回到原位 我目前有以下有效的方法 image containe
  • 使用 Apps 脚本在 Gmail 中嵌入 Google 表单

    我正在尝试使用 Apps 脚本在电子邮件中嵌入预填写的表单 这些电子邮件只会发送给 Gmail 用户 我想要的功能与手动通过电子邮件发送表单时按 在电子邮件中包含表单 选项相同 我已经成功创建了prefilledUrl并使用UrlFetch
  • 将字符串格式转换为日期时间(mm/dd/yyyy)

    我必须将 mm dd yyyy 格式的字符串转换为日期时间变量 但它应保留 mm dd yyyy 格式 string strDate DateTime Now ToString MM dd yyyy 请帮忙 您正在寻找DateTime Pa
  • 递归clearInterval不起作用

    我在 javaScript 中有以下函数 当我检测到需要重新加载样式表时调用此函数 例如 用户语言发生变化 因此文本将不再适合按钮 问题是 它卡在了 setInterval 部分 无限地循环进入其中 我可以在 chrome 调试器中看到它确
  • 如何将镜头效果应用到我的 UIImage 上?

    我如何将镜头效果应用到我的 UIImage 上 如下所示http processing org learning topics lens html 您可以使用Cocos2D框架来做到这一点 如果您选择使用它 可以通过以下方法轻松应用镜头效果
  • to_sql 不适用于 update_attributes 或 .save

    我正在寻找一种方法来存储在更新或创建操作中生成的 sql 字符串 我尝试过附加 to sql到最后update attributes但它返回一个TrueClass错误 或类似的东西 我有什么遗漏的吗 简而言之 您需要重写 ActiveRec
  • 在 SwiftUI 中处理派生状态

    假设我正在创建一个 日期编辑器 视图 目标是 采用默认的种子日期 它允许用户更改输入 如果用户随后选择 他们可以按 保存 在这种情况下 视图的所有者可以决定对数据执行某些操作 这是实现它的一种方法 struct AlarmEditor Vi
  • SQL 中的查询设计实践

    我正在 MS Access 2007 中构建数据库查询 我想知道我当前的设计实践是否达到标准 基本上 数据库在我来之前就已经配置好了 但我被赋予了构建有效查询来提取数据的责任 我当前的查询小而简单 每个查询一次完成 2 3 个任务 有时仅
  • Google OAuth2 - isAccessTokenExpired() 始终为 true

    我在应用程序中使用 OAuth 并且希望在访问令牌过期时注销用户 但是当我检查令牌过期时 client gt isAccessTokenExpired 它总是返回 1 if isset GET logout unset SESSION to
  • 是否可以导出 Google Apps 脚本执行记录

    我编写了一个 Web 应用程序脚本 该脚本被部署为在用户访问 Web 应用程序的上下文中运行 是否可以以编程方式导出 Web Apps 脚本执行脚本 不直接 您不会获得完整的堆栈跟踪 但您可以仔细记录您想要通知的所有内容 在脚本的末尾 您可
  • Excel VBA 将关闭的工作簿作为值复制并粘贴到活动工作簿,Mac OS X

    我知道这是一种常见的查询类型 但在主动搜索后 我尚未找到针对我的特定实例的答案 我也是一个VBA新用户 所以请耐心等待 我想要将包含实时公式 范围 A1 HW6000 的整个数据表 HISTORY XLSM 中的 AllDATA 选项卡 从
  • 如何使用 Watir 访问 Shadow DOM 并与之交互?

    我需要访问此页面 chrome downloads 并检查文件是否已下载 但它是 Shadow DOM 我发现这篇文章如何使用 Selenium Webdriver 访问 DOM 元素 http jeremysklarsky github
  • HTML - 如何制作“阅读更多”按钮

    在我的网站上 我有我的博客 我希望每张卡片都有一个 阅读更多 按钮 我特别希望它只显示x折叠时显示单词 非字符 然后展开时显示整个文本 我不想有一个按钮可以转到另一个具有完整内容的页面 因为我正在使用自己构建的 CMS 它会自动从表单添加帖
  • 将鼠标悬停在 Raphaeljs 中的一组元素上

    我有一个只包含一个矩形的集合 var hoverTrigger this paper set var outline this paper rect outline attr hoverTrigger push outline this s
  • Blazor InputSelect 中显示第一个选项,但值为 null

    我在 Razor 组件中遇到了 InputSelect 元素的奇怪行为 在我的输入表单上 我有几个与模型 合作伙伴 绑定的字段 我以下拉选择的形式放置了其中一些字段 因为绑定字段的 PartnerCategory 值是 id 整数 所以我从