C# 如何在MVC中使用复选框验证文本框?

C# 如何在MVC中使用复选框验证文本框?,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有一个视图模型: public string Address { get; set; } [DisplayName("Do you want Reward?")] public bool IsReward { get; set; } [Range(0,int.MaxValue,ErrorMessage="Please enter integer number")] [DisplayName("Reward")] public int Reward { g

我有一个
视图模型

   public string Address { get; set; }
   [DisplayName("Do you want Reward?")]
   public bool IsReward { get; set; }

   [Range(0,int.MaxValue,ErrorMessage="Please enter integer number")]

   [DisplayName("Reward")]
   public int Reward { get; set; }
默认情况下,在查看
iseward
属性中未选中,当用户选中
iseward
并发布视图时,如果
奖励
文本框为空,则向用户显示错误消息“请输入奖励”


如何使用
DataAnnotation
验证它?

请尝试以下代码。如果
iseward
为真且
Reward
文本框值为零,它将显示错误消息

    [RewardValidation]
    public class RewardModel
    {
        public string Address { get; set; }
        [DisplayName("Do you want Reward ؟")]
        public bool IsReward { get; set; }

        [Range(0, int.MaxValue, ErrorMessage = "Please enter integer number")]

        [DisplayName("Reward")]
        public int Reward { get; set; }
    }

public class RewardValidation : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        RewardModel app = value as RewardModel;
        if (app.IsReward && app.Reward==0)
        {
            ErrorMessage = "please enter Reward";

            return false;
        }
        return true;
    }
}

并包含
@Html.ValidationSummary(true)
以显示消息

您可以编写自己的验证规则。没有具体的关联,但这是一个实现示例:另一个简单的方法是在控制器中检查它并调用AddModelError(“奖励”,“请输入奖励”);您可以查看如何使用
[RequiredIfTrue]
或应用于
奖励
属性的类似验证属性-
[RequiredIfTrue(“iseward”,ErrorMessage=“please enter Reward”)]public int-Reward{get;set;}
,这将提供客户端和服务器端验证。如果你想写你自己的,这是一个很好的指南,它显示了奖励字段是必需的。而不是“请输入奖励”。有什么问题吗?@osmanRahimi,根据if(app.iseward&&app.Reward==0)条件,如果奖励为0(零),则只有它会显示消息“请输入奖励”奖励字段是必需的,因为奖励数据类型是int。如果是int?然后它将永远不会显示“奖励字段是必需的”消息