1

我有一个非常简单的视图模型,基于客户域模型。

我正在向它添加一个属性:CustomerNameAddress,它由域模型的 CustomerName、Contact 和 Town 组成。

但是,如果 CustomerName、Contact 或 Town 中的任何一个为null - 那么 CustomerNameAddress 也为 null。

无论如何在下面的查询中检查 null 并将其更改为“”,以便我的视图模型正常工作?

我试过:

CustomerNameAddress = (p.CustomerName || "") + ", " + (p.Contact || "") + ", " + (p.Town || "")

...但 VS 建议操作员 '||' 不能应用于“字符串”和“字符串”类型的操作数

我的控制器代码如下。

谢谢,

标记

    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);
    }

更新

我将代码修改为:

ss

但是现在得到 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; }

第二次更新 - 现在工作

我更新了用括号括起来的条件,现在它正在工作:

CustomerNameAddress = ((p.CustomerName == null) ? "" : (p.CustomerName + ", ")) +
                        ((p.Contact == null) ? "" : (p.Contact + ", ")) +
                        ((p.Town == null) ? "" : (p.Town))
4

2 回答 2

2

您可以使用条件运算符? :

 CustomerNameAddress = (p.CustomerName == null || p.Contact == null || p.Town == null ) ? "" : p.CustomerName + ", " + p.Contact + ", " + p.Town

查询将是。

var customers = from p in db.Customers
                where p.UserName.Equals(userName)
                select new CustomerLookupViewModel
                {
                    CustomerId = p.CustomerId,
                    Email = p.Email,
                    CustomerNameAddress =  (p.CustomerName == null || p.Contact == null ||  p.Town == null ) ? "" : p.CustomerName + ", " + p.Contact + ", " + p.Town

                };
于 2013-05-06T09:13:34.830 回答
1

无论如何在下面的查询中检查 null 并将其更改为“”,以便我的视图模型正常工作?

像这样的东西应该可以解决问题

CustomerNameAddress = 
    (string.IsNullOrWhiteSpace(p.CustomerName) ? "" : (p.CustomerName + ", ")) + 
    (string.IsNullOrWhiteSpace(p.Contact) ? "" : (p.Contact + ", ")) + 
    (string.IsNullOrWhiteSpace(p.Town) ? "" : (p.Town + ", "))

您可能希望为此创建一个过程,以便可以重用该简单逻辑。

于 2013-05-06T09:15:41.040 回答