0

ソリューションで ASP.NET MVC4 を使用しています。以下の ViewModel を使用して、フィールド Date が今日の場合にのみフィールド EmergencyReason が入力されることを検証したいと考えています。私はこれを試します:

public class LoadingViewModel
{
    public DateTime Date { get; set; }

    [RequiredIf("Date", Comparison.IsEqualTo, DateTime.Today)]
    public string EmergencyReason { get; set; }
    ...
}

うまくいきません。RequiredIf の 3 番目の引数は、定数式でなければなりません...

日付フィールドが今日の場合にのみ、ユーザーに EmergencyReason の入力を強制するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

0

RequiredIf標準のASP.NETMVC4パッケージの一部ではない非標準の属性を使用しているようです。

ご存知のように、C#では属性に定数値のみを渡すことができます。したがって、1つの可能性は、カスタム属性を作成することです。

public class RequiredIfEqualToTodayAttribute: RequiredIfAttribute
{
    public RequiredIfEqualToTodayAttribute(string field)
        : base(field, Comparison.IsEqualTo, DateTime.Today)
    {
    }
}

その後:

public class LoadingViewModel
{
    public DateTime Date { get; set; }

    [RequiredIfEqualToToday("Date")]
    public string EmergencyReason { get; set; }

    ...
}
于 2012-10-28T16:14:06.403 に答える
0

DateTimeC# はリテラルをサポートしていません。これを回避するには、 Stringlike thisを使用しますが、問題は解決しません。検証コードを 内に移動してControllerModelState.AddModelError("EmergencyReason", "Emergency Reason is required")

于 2012-10-28T09:58:37.400 に答える