web-dev-qa-db-ja.com

カミソリビューでnullのモデル文字列プロパティを確認する方法

_ASP.NET MVC 4_アプリケーションに取り組んでいます。私は最初にコードで_EF 5_を使用し、私が持っているエンティティの1つで:

_public string ImageName { get; set; }
public string ImageGUIDName { get; set; }
_

エンティティの一部であるこれらの2つのプロパティ。画像がアップロードされていない可能性があるため、これらの値はnullになりますが、データベースからImageNameとしてImageGUIDNameおよびnullとしてモデルを渡すビューをレンダリングすると、次のようになります。

_Exception Details: System.ArgumentNullException: Value cannot be null._

基本的な考え方は、画像があるかどうかに応じて、ユーザーに異なるテキストを提供することです。

_            @if (Model.ImageName != null)
            {
                <label for="Image">Change picture</label>
            }
            else
            { 
                <label for="Image">Add picture</label>
            }
_

上記のコードがそのエラーを受け取ったとき、string.IsNullOrEmpty(Model.ImageName)Model.ImageName.DefaultIfEmpty() != nullを試しましたが、まったく同じエラーが発生しました。 yエンティティプロパティをnullとして設定することはできないようです:

_public string? ImageName { get; set; } //Not working as it seems
_

それで、どうすればこれに対処できますか?

28
Leron

最初にこれを試してください、あなたはヌルモデルを渡すかもしれません:

@if (Model != null && !String.IsNullOrEmpty(Model.ImageName))
{
    <label for="Image">Change picture</label>
}
else
{ 
    <label for="Image">Add picture</label>
}

それ以外の場合は、いくつかの 三項の楽しみ! を使用すればさらにすっきりさせることができますが、モデルがNullの場合はエラーになります。

<label for="Image">@(String.IsNullOrEmpty(Model.ImageName) ? "Add" : "Change") picture</label>
61
naspinski