【问题标题】:Operator '+' is ambiguous on operands of type '<null>' and '<null>' in Webgrid运算符“+”在 Webgrid 中的“<null>”和“<null>”类型的操作数上不明确
【发布时间】:2012-09-21 08:13:45
【问题描述】:

我想在 webgrid 列中显示一些连接的字段,并在连接的字段具有空值时收到此错误

SQL 查询:

 SELECT *, T.Name AS Title, PT.Name AS PropertyType
 FROM Properties AS P
 LEFT OUTER JOIN Owners_Properties AS OP ON OP.PropertyId = P.PropertyId
 LEFT OUTER JOIN Owners AS O ON O.OwnerId = OP.OwnerId
 LEFT OUTER JOIN PropertyTypes AS PT ON PT.PropertyTypeId = P.PropertyTypeId
 LEFT OUTER JOIN Titles AS T ON T.TitleId = O.TitleId      
 WHERE P.CondoId=@0 AND P.PropertyId=@1

HTML 标记:

propertyGrid.Column("Propriétaire", format: (item) => item.Title+ ' ' + item.FirstName+ ' ' + item.LastName)

当“两个连续字段”为 NULL 时会出现此问题

我尝试通过以下方式修改我的 HTML 代码:

 propertyGrid.Column("Owner", format: (item) => @Html.Raw((item.Title=!null) ? (item.Title+ ' ') : "")+ (item.FirstName=!null) ? (item.FirstName+ ' ') : "")+ ((item.LastName=!null) ? item.LastName : "")))

也应该可以避免返回这些 NULL 值,但在 SQL 查询方面,但我也没有成功。生活很艰难;-)

【问题讨论】:

  • 还没有完全遵循这一切,但第一次阅读它不应该=! != 在你的 HTML 中?
  • 你是对的!我傻吗!您对第二部分(SQL)有答案吗?如何在标题,名字和姓氏上用“”替换空值?请注意,Title 来自以 TitleId 为键的连接表(Titles.Name)

标签: html sql asp.net-mvc concatenation webgrid


【解决方案1】:

我建议您使用视图模型并在其上添加一个属性来格式化值:

public string FormattedOwner
{
    get
    {
        return string.Format("{0} {1} {2}", Title, FirstName, LastName);
    }
}

现在在您的视图中,只需使用这个新的视图模型属性将列绑定到:

propertyGrid.Column(columnName: "FormattedOwner", header: "Propriétaire")

如果您不想遵循良好实践并使用视图模型,您可以随时将视图转换为意大利面条式代码:

propertyGrid.Column(
    header: "Propriétaire",
    format: @<text>@string.Format("{0} {1} {2}", item.Title, item.FirstName, item.LastName)</text>
)    

【讨论】:

    【解决方案2】:

    替换=! != 在 HTML 标记中。

    在 SQL 中,您可以使用 ISNULL (SQL Server)、IFNULL (MySQL) 或类似的其他数据库来将 NULL 替换为 ""。

    例如: SELECT ISNULL(T.Name, '') AS Title, ...

    【讨论】:

      猜你喜欢
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多