在视图中显示模型时如何绕过不可为空的属性?

时间:2017-01-21 15:12:33

标签: c# asp.net-mvc entity-framework ef-code-first

所以我在我的模型中有这个属性:

public string ImageBase64 => System.Convert.ToBase64String(ImageData);

我无法通过在?部分之后添加string来使其可以为空,因为我得到:

  

类型字符串必须是非可空类型才能将其用作泛型类型或方法中的参数Nullable

在我看来,我尝试使用以下条件,该条件有效(或没有效果),并且我在F5上得到了Value cannot be null. Parameter name: inArray

@if (Model.ImageBase64 != null)
{
        <dt>
            @Html.DisplayNameFor(model => model.ImageData)
        </dt>

        <dd>
            <img src="data:image/png;base64,@Model.ImageBase64" />

        </dd>
    }

这是我的行动方法:

public ActionResult UserProfile()
    {

        //
        string currentUserId = User.Identity.GetUserId();
        //ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId);
        UserDetails userDetails = db.UsersDetails.Where(c => c.identtyUserId == currentUserId)
                .FirstOrDefault();
        db.Users.FirstOrDefault(x => x.Id == currentUserId);
        //
       // var usersDetails = db.UsersDetails.Include(u => u.Company);
        return View(userDetails);
    }

任何想法我如何忽略该属性,如果它为null并且仍然显示剩余的属性,那不是吗?

2 个答案:

答案 0 :(得分:1)

您获得的错误表明您的ImageData要么为null,要么格式不正确。我相信它是失败的System.Convert.ToBase64方法。

https://msdn.microsoft.com/en-us/library/dhx0d524(v=vs.110).aspx

此外,您无法添加?到字符串类型,因为它已经可以为空(基本上你得到的编译信息是什么)。

ImageData来自哪里?它是一个字节数组吗?

编辑后包括问题后的答案:

public string ImageBase64
{
    get
    {

        return this.ImageData != null ? Convert.ToBase64String(this.ImageData) : null;
    }
}

答案 1 :(得分:0)

您可以使用以下内容:

    public string ImageBase64 => ( imagedata == null )?
String.Empty:System.Convert.ToBase64String(imagedata);