[c#] एमवीसी प्रमाणीकरण अन्य मूल्य से कम / उच्च


Answers

Foolproof नामक एक NuGet पैकेज है जो आपके लिए इन टिप्पणियां प्रदान करता है। उस ने कहा - एक कस्टम विशेषता लिखना बहुत आसान और अच्छी प्रैक्टिस दोनों है।

मूर्खप्रवाह का उपयोग करना इस तरह दिखेगा:

public class FinanceModel{
   public int MinimumCost {get;set;}

   [GreaterThan("MinimumCost")]
   public int MaximumCost {get;set;}
}
Question

MVC.Net में किसी मॉडल को सत्यापित करने का सबसे अच्छा तरीका कैसा है जहां मैं न्यूनतम / अधिकतम स्वीकार करना चाहता हूं।

किसी फ़ील्ड के लिए व्यक्तिगत न्यूनतम / अधिकतम मान नहीं। लेकिन उपयोगकर्ता के लिए न्यूनतम / अधिकतम निर्दिष्ट करने के लिए अलग-अलग फ़ील्ड।

public class FinanceModel{
   public int MinimumCost {get;set;}
   public int MaximumCost {get;set;}
}

तो मुझे यह सुनिश्चित करने की ज़रूरत है कि न्यूनतम लागत हमेशा अधिकतम लागत से कम है।




पूर्णांक के लिए वीबी में:

आदर्श

<UtilController.IsIntegerGreatherOrEqualThan("PropertyNameNumberBegins", "PeriodErrorMessage")>
        Public Property PropertyNameNumberEnds As Nullable(Of Integer)

सत्यापन

Public Class IsIntegerGreatherOrEqualThan
        Inherits ValidationAttribute

        Private otherPropertyName As String
        Private errorMessage As String

        Public Sub New(ByVal otherPropertyName As String, ByVal errorMessage As String)
            Me.otherPropertyName = otherPropertyName
            Me.errorMessage = errorMessage
        End Sub

        Protected Overrides Function IsValid(thisPropertyValue As Object, validationContext As ValidationContext) As ValidationResult

            Dim otherPropertyTestedInfo = validationContext.ObjectType.GetProperty(Me.otherPropertyName)

            If (otherPropertyTestedInfo Is Nothing) Then
                Return New ValidationResult(String.Format("unknown property {0}", Me.otherPropertyName))
            End If

            Dim otherPropertyTestedValue = otherPropertyTestedInfo.GetValue(validationContext.ObjectInstance, Nothing)

            If (thisPropertyValue Is Nothing) Then
                Return ValidationResult.Success
            End If

            ''  Compare values
            If (CType(thisPropertyValue, Integer) >= CType(otherPropertyTestedValue, Integer)) Then
                Return ValidationResult.Success
            End If

            ''  Wrong
            Return New ValidationResult(errorMessage)
        End Function
    End Class





Links