2

フォームの送信時に Guid が空かどうかを確認しています。

public class NotAttribute : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                if ((Guid) value == Guid.Empty)
                {
                    return new ValidationResult("You must add an image before saving!!!!");
                }
            }

            return null;
        }
    }

HTML:

@Html.HiddenFor(m => Model.ImageContentGuid)
@Html.ValidationMessageFor(m => Model.ImageContentGuid, "You must upload an image before saving.")

ユーザーが画像をアップロードすると、Controller から Hidden Guid が生成されます。画像がアップロードされていない場合、Guidは生成されません。

ロジックは機能しますが、エラー メッセージはポップアップしません。さらに、コードは実行を続け、停止するはずだったので、私のプログラムは NullReference でクラッシュします。

誰でもこれで私を助けることができますか?

4

1 に答える 1

0

Guid.Emptyはnullと同じものではありません。Guid.Emptyは0で埋められます。Guidは値型です。つまり、nullにすることはできません。ただし、nullの可能性があるオブジェクトを受け取っている場合、GUIDをオブジェクトに変換すると、ボックス化された値と呼ばれるものが作成され、参照型になります。

したがって、最初にnullでないことを確認してから、空と比較する必要があります。

于 2012-11-12T17:06:34.180 に答える