Html Webgrid中“”和“”类型的操作数上的运算符“+”不明确
我想在webgrid列中显示一些连接的字段,并在连接的字段具有空值时收到此错误 SQL查询:Html Webgrid中“”和“”类型的操作数上的运算符“+”不明确,html,sql,asp.net-mvc,concatenation,webgrid,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
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)
当“两个连续字段”为空时会出现此问题
我尝试用以下方式修改HTML代码:
propertyGrid.Column("Owner", format: (item) => @Html.Raw((item.Title=!null) ? (item.Title+ ' ') : "")+ (item.FirstName=!null) ? (item.FirstName+ ' ') : "")+ ((item.LastName=!null) ? item.LastName : "")))
也可以避免返回这些空值,但在SQL查询端,我也没有成功。生活是艰难的- 我建议您使用视图模型并在其上添加一个属性,该属性将格式化值:
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>
)
替换=!由!=在HTML标记中 在SQL中,您可以使用ISNULL SQL Server、IFNULL MySQL或其他类似的数据库将NULL替换为 例如:
选择ISNULLT.Name作为标题,…还没有完全理解这一切,但是第一次读它不应该是=!是在你的HTML中?你是对的!!我真傻!关于第二部分,你有答案吗?如何用title、firstname和lastname上的值替换空值?请注意,标题来自一个联接的表Titles.Name,其中TitleId为键