我目前正在嘗試通過MVC驗證,並且針對一些需要根據其他字段的值而需要的問題。下面是一個例子(我還沒有弄清楚) - 如果PaymentMethod ==「Check」,那麼ChequeName應該是必需的,否則它可以通過。Asp.Net MVC驗證 - 依賴字段
[Required(ErrorMessage = "Payment Method must be selected")]
public override string PaymentMethod
{ get; set; }
[Required(ErrorMessage = "ChequeName is required")]
public override string ChequeName
{ get; set; }
我使用了[必要] System.ComponentModel.DataAnnotations,並且還擴大一個ValidationAttribute,試圖得到這個工作,但我不能傳遞變量通過做驗證(以下擴展名)
public class JEPaymentDetailRequired : ValidationAttribute
{
public string PaymentSelected { get; set; }
public string PaymentType { get; set; }
public override bool IsValid(object value)
{
if (PaymentSelected != PaymentType)
return true;
var stringDetail = (string) value;
if (stringDetail.Length == 0)
return false;
return true;
}
}
實現:
[JEPaymentDetailRequired(PaymentSelected = PaymentMethod, PaymentType = "Cheque", ErrorMessage = "Cheque name must be completed when payment type of cheque")]
有沒有人有這種驗證的經驗?將它寫入控制器會更好嗎?
感謝您的幫助。
第二個想法...您如何設置PaymentSelected = PaymentMethod?您應該收到錯誤,因爲PaymentMethod不是一個常量表達式。 – Min 2010-01-05 23:34:03
嗨敏,你說得對。我認爲我可以這樣做,但它不起作用。我只是想展示我曾經嘗試過的,但也評論說它不會讓我通過這個變量。 – 2010-01-06 00:44:03