示例: 我們有一個條件字段。 此條件字段是一個單選按鈕,其中包含以下兩個值「是」和「否」。 可以說這個單選按鈕的名字是「AAA」。MVC2:具有兩個字段依賴性的驗證(數據註釋)
只有當另一個單選按鈕字段「BBB」設置爲「是」時,才應顯示此條件字段「AAA」。 (單選按鈕「BBB」的值也是「是」和「否」)。
但條件字段「AAA」應該顯示爲沒有預設值,當字段第一次顯示時應該設置爲「是」和「否」。
問題根據當(無條件)字段「BBB」設置爲「是」時只需要條件字段「AAA」的要求發生 - 當字段「BBB」爲「設置爲「否」。
(聲音,我沒有聽到任何關於if語句,還是?但是堅持下去,繼續閱讀...)
相信我,它不會是爲我解決這個題目有問題當我們將使用「的ModelState」 - 但我們在這裏談論的驗證(數據註釋),看起來像這樣的位置:
public class Input1FormModel
{
[Required(ErrorMessageResourceName="Error_Field_AAA_Empty",
ErrorMessageResourceType=typeof(Resources.MyDialog))]
public int AAA { get; set; }
}
我完全理解也是這些代碼行 - 我相信;-)
...
//property limits
public int UpperBound { get { return DateTime.Now.Year; } }
public int LowerBound { get { return 1900; } }
...
[NotNullValidator]
[PropertyComparisonValidator("LowerBound", ComparisonOperator.GreaterThan)]
[PropertyComparisonValidator("UpperBound", ComparisonOperator.LessThanEqual)]
public int? XYZ { get; set; }
但是,如何解決上述的依賴(AAA < - > BBB)?
將「return DateTime.Now.Year;」更改爲一個函數調用,它首先檢查另一個字段並返回true或false?但如何獲取其他領域的價值?
thx 4 u很快回復。你是對的。該教程說:「例如,您可能需要執行一個驗證規則,該規則取決於Movie類的多個屬性的值」...因此可能的。解決這個問題的另一種方法是使用Modelstate,正如我在原始發佈中所說的那樣...但目標是使用[Required ...]或[PropertyComparisonValidator(「LowerBound」,ComparisonOperator.GreaterThan)]等屬性...所以最後是不是我的解決方案:-)可能是這不能解決與屬性...其他人有什麼想法嗎?但不要誤會我:謝謝你的回覆/答案! – user415876 2010-09-02 19:48:59
我只是試圖給你一種替代方法,因爲我不知道用什麼方法來做你要求使用的屬性。在這裏,看看這個問題/答案:http://stackoverflow.com/questions/1511495/using-idataerrorinfo-in-asp-net-mvc/1511545#1511545 – Martin 2010-09-02 20:14:29
馬丁,相信我。我非常感謝您的快速回復和非常好的答案!對不起,我在回覆中使用了錯誤的單詞。這不是我的方式來侮辱你。 – user415876 2010-09-04 08:01:45