我有以下返回条件字符串的WebMethod。不幸的是,if语句似乎不起作用。我知道WebMethod正在工作,因为我得到了Bla bla bla字符串,但没有if语句中的图标。我做错了什么?
[WebMethod]
public static string photos()
{
StringBuilder photos_sb = new StringBuilder();
photos_sb.AppendFormat("Bla bla bla bla...");
db = Database.Open("DefaultConnection");
var HasPhoto = db.Query("SELECT [IDphoto] FROM [photos]");
if (HasPhoto != null)
{
photos_sb.AppendFormat("<img src=\"icon-Green.png\" />");
}
else
{
photos_sb.AppendFormat("<img src=\"icon-Gray.png\" />");
}
db.Close();
db.Dispose();
photos_sb.AppendFormat("Bla2 bla2 bla2 bla2...");
return photos_sb.ToString();
}
答案 0 :(得分:2)
您的img标记缺少结束>
。这意味着它们很可能正在被输出,但它们不会以您期望的格式出现,从而呈现您所期望的。给出的代码将返回如下内容:
Bla bla bla bla...<img src="icon-Gray.png"Bla2 bla2 bla2 bla2...
我希望浏览器能够对此感到非常困惑。
如果这实际上是一个拼写错误而你输出的字符串真的只是“Bla bla bla bla ...”那么你唯一的可能就是你运行了错误的代码版本。如果编译了上述内容,则无法通过if语句并至少运行其中一个分支而返回您的值。
我建议三件事:
答案 1 :(得分:0)
我认为答案已经提供,所以这只是一些有用的建议。节省麻烦并减少重复代码:
photos_sb.Append("Bla bla bla bla...");
[....]
photos_sb.Append("<img src=\"");
if (HasPhoto != null)
{
photos_sb.Append("icon-Green.png");
}
else
{
photos_sb.Append("icon-Gray.png");
}
photos_sb.Append("\"" />");
这样你的条件只会改变实际变化的一位代码。
使用AppendFormat
稍微清洁的方式就是这样......
photos_sb.AppendFormat("Bla bla bla bla...");
[....]
string photo = "icon-Gray.png";
if (HasPhoto != null)
{
photo = "icon-Green.png";
}
photos_sb.AppendFormat("<img src=\"{0}\" />", photo);