param7[1].Value = tbLastName.Text.Length > 0 ? tbLastName.Text : DBNull.Value;

为什么这是不可能的,还有什么建议可以try 吗?20个参数的If/else是不可能的.

推荐答案

问题在于(如错误消息所示),条件表达式需要在两个分支上使用相同的类型,或者需要从一个类型隐式转换为另一个类型.在你的例子中,没有一个,所以你得到了错误.一个快速修复方法是将其中一个值强制转换为(object)(这很好,因为DbParameter.Value的类型无论如何都是object)

所以这应该对你有用:

param7[1].Value = tbLastName.Text.Length > 0 ? tbLastName.Text : (object)DBNull.Value;

Asp.net相关问答推荐

属性包含破折号的 ServiceStack 请求对象?

在每个对象上设置 ClientIDMode = Static 是否有任何缺点(在母版页的 maincontent 上设置)

RNGCryptoServiceProvider - 随机数审核

系统日期时间?与 System.DateTime

ASP MVC 授权除少数之外的所有操作

我可以在 .net 核心中使用 Entity Framework 6(非核心)吗?

ASP.NET Response.Redirect 使用 302 而不是 301

如何从 RouteData 获取路由名称?

学习什么 - Ruby on Rails 或 ASP .NET MVC...鉴于熟悉 ASP .NET

在 ASP.NET 中将虚拟路径转换为实际 Web 路径

如何在 ASP.Net Core Razor 页面上重定向

MVC 3视图中的当前上下文中不存在名称'HTML'

如何在 IIS 7.5 上使用 ASP.NET 表单身份验证保护静态文件?

ASP.NET 中的全局资源与本地资源

如何验证用户在 CheckBoxList 中 Select 了至少一个复选框?

ASP.NET MVC 2.0 JsonRequestBehavior 全局设置

什么时候应该使用 Response.Redirect(url, true)?

Asp.Net web 服务:我想返回错误 403 禁止

路由模板分隔符/不能连续出现 - 属性路由问题

Appdomain 回收究竟是什么