Customer ドメイン モデルに基づく非常に単純なビューモデルがあります。
これに 1 つのプロパティを追加します。それは、ドメイン モデルの CustomerName、Contact、および Town で構成される CustomerNameAddress です。
ただし、CustomerName、Contact、または Town のいずれかがnullの場合、CustomerNameAddress も null です。
ビューモデルが正しく機能するように、以下のクエリ内で null をチェックし、それを "" に変更する方法はありますか?
私が試した:
CustomerNameAddress = (p.CustomerName || "") + ", " + (p.Contact || "") + ", " + (p.Town || "")
...しかし、VSはオペレーターにアドバイスしました '||' タイプ 'string' および 'string' のオペランドには適用できません
私のコントローラーコードは以下です。
ありがとうございました、
マーク
public JsonResult Lookup(string id)
{
string userName = null;
if (HttpContext.User.Identity.IsAuthenticated)
{
userName = HttpContext.User.Identity.Name;
}
var customers = from p in db.Customers
where p.UserName.Equals(userName)
select new CustomerLookupViewModel
{
CustomerId = p.CustomerId,
Email = p.Email,
CustomerNameAddress = p.CustomerName + ", " + p.Contact + ", " + p.Town
};
return Json(customers, JsonRequestBehavior.AllowGet);
}
アップデート
コードを次のように修正しました。
しかし、今では p.Contact でエラーが発生します (上に下線が引かれています) アドバイス: 型「文字列」を「ブール値」に暗黙的に変換できません
ただし、私のビューモデルには明らかに Contact が文字列として含まれています。
public class CustomerLookupViewModel
{
public string CustomerNameAddress { get; set; }
public int CustomerId { get; set; }
[Required]
[Display(Name = "Customer Name")]
public string CustomerName { get; set; }
[Display(Name = "Customer Contact")]
public string Contact { get; set; }
2 回目の更新 - 現在動作中
括弧で囲まれるように条件を更新しましたが、現在は機能しています。
CustomerNameAddress = ((p.CustomerName == null) ? "" : (p.CustomerName + ", ")) +
((p.Contact == null) ? "" : (p.Contact + ", ")) +
((p.Town == null) ? "" : (p.Town))