运算符'+'在Webgrid中的类型为'<null>'和'<null>'的操作数上是不明确的</null> </null>

时间:2012-09-29 22:19:06

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

我想在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查询方面,但我也没有成功。生活很艰难; - )

2 个答案:

答案 0 :(得分: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>
)    

答案 1 :(得分:0)

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

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

E.g:     SELECT ISNULL(T.Name,'')AS Title,...