首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# ASP.NET MVC RequiredIf -如何将ErrorMessage设置为其他(字符串)属性的值?

在C# ASP.NET MVC中,可以使用RequiredIf属性来实现根据其他属性的值来设置ErrorMessage的功能。RequiredIf属性是自定义的验证属性,用于在满足特定条件时,将某个属性标记为必填字段。

要将ErrorMessage设置为其他属性的值,可以按照以下步骤进行操作:

  1. 首先,创建一个自定义的验证属性类,命名为RequiredIfAttribute。在该类中,继承自ValidationAttribute类,并重写IsValid方法。在IsValid方法中,可以通过传入的validationContext参数获取到当前属性的值以及其他属性的值。
代码语言:txt
复制
using System;
using System.ComponentModel.DataAnnotations;

public class RequiredIfAttribute : ValidationAttribute
{
    private string _otherProperty;
    private string _otherPropertyValue;

    public RequiredIfAttribute(string otherProperty, string otherPropertyValue)
    {
        _otherProperty = otherProperty;
        _otherPropertyValue = otherPropertyValue;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var otherPropertyInfo = validationContext.ObjectType.GetProperty(_otherProperty);
        var otherPropertyValue = otherPropertyInfo.GetValue(validationContext.ObjectInstance);

        if (otherPropertyValue.ToString() == _otherPropertyValue && value == null)
        {
            return new ValidationResult(ErrorMessage);
        }

        return ValidationResult.Success;
    }
}
  1. 在需要应用该验证属性的模型类中,使用RequiredIf属性来修饰需要验证的属性,并传入其他属性的名称和对应的值。
代码语言:txt
复制
public class YourModel
{
    [RequiredIf("OtherProperty", "OtherValue", ErrorMessage = "This field is required.")]
    public string YourProperty { get; set; }

    public string OtherProperty { get; set; }
    public string OtherValue { get; set; }
}
  1. 在视图中,可以使用Html.ValidationMessageFor方法来显示验证错误信息。
代码语言:txt
复制
@model YourModel

@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.YourProperty)
    @Html.TextBoxFor(m => m.YourProperty)
    @Html.ValidationMessageFor(m => m.YourProperty)

    <input type="submit" value="Submit" />
}

以上就是如何将ErrorMessage设置为其他属性的值的方法。通过自定义的验证属性和相应的模型设置,可以根据其他属性的值来动态设置验证错误信息。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),腾讯云数据库(TencentDB),腾讯云对象存储(COS)等。您可以访问腾讯云官方网站获取更多产品信息和详细介绍:腾讯云

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVC客户端验证:jQuery验证在Model验证中实现

元素具有一个“data-val”属性和一系列以“data-val-”前缀属性,前者表示是否需要对用户输入进行验证,后者则代表相应验证规则。...验证错误消息一般作为验证类型属性,而验证参数对应属性自然就是相应属性。...}”命名模式提取相应验证规则属性,并最终得到一样验证规则,ASP.NET MVC只需要对两种作简单适配即可。...如下面的代码所示,ModelClientValidationRule具有三个属性字符串属性ErrorMessage和ValidationType表示验证错误消息和验证类型,类型IDictionary...ASP.NET MVC客户端验证:jQuery验证 ASP.NET MVC客户端验证:jQuery验证在Model验证中实现 ASP.NET MVC客户端验证:自定义验证

7.1K70
  • ASP.NET MVC基于标注特性Model验证:ValidationAttribute

    如下面的代码片断所示,ValidationAttribute具有一个字符串类型ErrorMessage属性用于指定验证错误消息。...如果我们通过ErrorMessage属性指定一个字符串作为验证错误消息,又通过ErrorMessageResourceName/ErrorMessageResourceType属性指定了错误消息资源项对应名称和类型...以如下所示RequiredAttribute例,应用在该类型上AttributeUsageAttrribute特性AllowMultiple属性设置False。...AttributeUsageAttrribute特性AllowMultiple设置True就可以将它们多次应用到被验证属性或者类型上了呢?...(因为Salary属性非空类型,被认为是必需),另一个自然来源于应用在该属性RangeIfAttribute特性。

    1.7K110

    ASP.NET MVC编程——模型

    ,达到修饰模型属性或验证属性目的 特性名称 描述 备注 StringLength 设置字符串允许最大长度 Required 标记字段必填字段 RegularExpression 必须满足指定正则表达式...MinLength 设置数组或字符串最小长度 MaxLength 设置数组或字符串最大长度 Remote 通过控制器操作验证指定字段 public RemoteAttribute(string action...当模型绑定器使用新对模型属性更新后,会利用当前模型元数据获得模型验证器,模型验证器会找到所有施加于模型属性特性并执行验证逻辑,然后模型绑定器会捕获所有失败验证规则,并将它们放入模型状态中。...ASP.NET MVC4 Web编程 2.Jon Galloway/Phil Haack/Brad Wilson/K....Scott Allen,孙远帅/邹权译  ASP.NET MVC4 高级编程(第四版) 3.黄保翕,ASP.NET MVC4开发指南 4.蒋金楠,ASP.NET MVC4框架揭秘 5.https://www.asp.net

    2.4K80

    ASP.NET Core 基础知识】--MVC框架--Models和数据绑定

    1.2 创建Models类 在ASP.NET Core MVC中创建Models类通常是通过定义C#类来表示应用程序中数据结构。...以下是一些常用数据验证注解: [Required]: 用于标记一个属性必填项,不能为null。如果未提供,会产生验证错误。...return View(); } 在这个例子中,Items 属性是一个字符串列表,ASP.NET Core MVC框架将尝试将请求中数据映射到该列表中。 3....: 在 IsValid 方法中,你可以访问当前验证属性以及整个模型其他属性。...这些是一些通用ASP.NET Core MVC佳实践和注意事项。根据具体项目的需求和规模,可能还需要进一步考虑其他方面的最佳实践,例如分布式缓存、日志记录策略等。

    51810

    MVC 到使用 ASP.NET Core 6.0 Minimal API

    年,随着 ASP.NET MVC 引入了其他语言中变得司空见惯模型-视图-控制器模式[1],并为其提供原生支持,.NET Web 应用程序开发有了极速发展。...这篇文章提供了有关如何将传统 MVC 概念转换为这种构建轻量级 HTTP API 和服务新方法分步指南。...Startup MVC dotnet new webapi 新 ASP.NET 模板取消了Startup类并利用了 C# 10 顶级语句功能,因此我们有一个Program.cs包含所有引导代码文件...; 所述pattern指定路线不同区段,并且允许指定默认。参数可以利用 ASP.NET 路由约束语法[3]来限制接受。 对于 API,建议使用基于属性路由[4]。...由于我们在上面介绍了绑定路由,本节将主要关注在请求正文中或通过查询字符串参数接收 JSON 数据。

    7.5K10

    Asp.net mvc 知多少(六)

    该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大特点是以面试问答形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次理解。...Data Annotation 验证特性: DataType - 属性指定数据类型 DisplayName - 属性指定显示名称 DisplayFormat - 属性指定显示格式 Required...- 限制属性必录 ReqularExpression - 用正则表达式验证属性是否满足要求 Range - 限制属性在某一区间 StringLength - 指定string类型属性最小和最大长度...通过在view中razor代码块中指定。view中设置将覆盖应用程序级别的设置。...该插件是从ASP.NET MVC3引入,通过使用组合jquery验证和HTML5数据属性在客户端应用数据模型验证。 Q67.

    2.4K50

    ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器

    DataAnnotations 允许我们描述希望应用在模型属性验证规则,ASP.NET MVC 将会使用这些 DataAnnotations ,然后将适当验证信息返回给用户。   ...– 表示这个属性是必须提供内容字段   (2)[StringLength]:字符串长度 – 定义字符串类型属性最大长度   (3)[Range]:范围 – 数字类型属性提供最大和最小   ...从上图可以看出,我们在浏览器端校验都是通过为html标签设置自定义属性来实现,我们在Model中其添加各种校验特性,都会在客户端生成一个特定属性,例如:data-val-length-max=...原来我们在AjaxOptions中所设置参数也被解析成了form自定义属性,它们对应关系如下: ?...三、AOP而生 — ASP.Net MVC默认过滤器 3.1 过滤器初步   大一点项目总会有相关AOP面向切面的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中Action在执行前或者执行后我们想做一些特殊操作

    2.1K20

    ASP.NET MVC基于标注特性Model验证:将ValidationAttribute应用到参数上

    ASP.NET MVC默认采用基于标准特性Model验证机制,但是只有应用在Model类型及其属性ValidationAttribute才有效。...以如下所示RangeAttribute定义例,应用在该类型上AttributeUsageAttribute定义表明可以标注该特性目标元素包括参数、字段和属性。...比如所以我们在类型Contact参数上应用一个验证特性,该特性应该与应用在Contact类型上特性具有相同效果,但是与Address属性无关。...除此之外,我们还利用应用到参数DisplayAttribute特性对Model元数据DisplayName属性进行了相应设置。...,表示操作数两个参数x和y分别应用了一个RangeAttribute特性将允许值得范围设置10到20和20到30,并设置了相应错误消息。

    75290

    Asp.NetCore Web开发之输入验证

    MVC框架中,也就是说我们可以直接引用,它们引用如下所示: //如果你用asp.net core MVC 你可以直接复制此代码到你需要地方 <script src="~/lib/jquery-validation...<em>其他</em><em>的</em>代码用于<em>设置</em>样式等信息,初学者可忽略。...class PersonData { [StringLength(3)]//<em>字符串</em>长度<em>为</em>3 [Required]//必填自段 public string Name { get...ModelState.Values就是代表一个个PersonData中<em>的</em><em>属性</em><em>值</em>,这是外层循环,又因为,验证可能为多个,所以通过第二层循环遍历该<em>属性</em>所有的错误信息,现在来测试一下: 直接输入12,控制台打印结果如下...); } Console.WriteLine(prop.<em>ErrorMessage</em>); return View(); } 使用它内部<em>的</em>方法进行验证,这也是为什么叫自身验证,可以直接遍历返回<em>值</em>

    1.9K30

    ASP.NET Core 使用 SQLite 教程,EF SQLite教程

    ---- 1 新建ASP.NET Core MVC 应用 1.1 新建MVC应用 打开Visual Studio 2017,新建 ASP.NET Web应用程序,选择 MVC(模型视图控制器)。...笔者版本 ASP.NET Core 版本 2.1 ,选择 NuGet 包版本 2.11。 如果你 .Net Core 是最新,那么 NuGet 也选最新即可。...”)); 表示     向应用注入DbContext (数据库上下文服务),注入上下文类型 MyContext> (options=>options.UseSqlite(“连接字符串”) 是 lambda...Lambda 表达式属于C# 基础知识,不会的话,先记着,以后查找资料。...经过上面操作,我们已经可以对数据库进行操作,实际上,虽然可以操作数据,可是如果我想设置某个项必须填写呢,某个项格式必须是手机呢?总不能让用户随便填吧?

    4.6K50

    ASP.NET Core 基础知识】--MVC框架--Views和Razor语法

    这里 User.Name 是一个C#表达式,它会被自动输出到HTML中。 代码块:使用 @{ } 包裹C#代码块,可以在其中编写多行代码。...-- ...其他JS文件... --> 在这个示例中: @ViewBag.Title 用于动态设置页面的标题,具体标题信息会在每个视图中进行设置。...特性和注解 通过在模型属性上使用特性和注解,可以对模型绑定行为进行更精确控制。例如,可以使用 Required 特性指定某个属性必填项。...} 默认 在模型属性设置默认,可以确保即使没有提供相应数据,模型属性也有一个合理初始。...八、总结 ASP.NET Core是一款强大而灵活开发框架,结合Razor视图引擎和MVC架构,构建现代Web应用提供了丰富工具和最佳实践。

    33220

    asp.net MVC 验证注解

    对于Web系统,对于用户输入验证是必须。不仅需要在客户端对用户输入进行验证,在服务端也需要对用户执行进行验证。 asp.net MVC中对于验证提供了一种注解机制。...正则表达式是一种检查字符串格式和内容简洁有效验证方式。下面正则表达式能够有效验证email地址。...[A-Za-z]{2,4}")] 4.Range Range特性能够指定数值类型最小和最大。该特性第一个参数设置最小。第二个参数设置最大。...Range既可以设置int类型,也可以设置成double类型。 [Range(5,15)] 5.System.Web.Mvc MVC中提供了两个验证特性,分别是Remote和Compare特性。...[Remote("CheckName","User")] CheckName 是 User控制器中方法。 Compare特性,它用于确保模型中两个属性拥有相同

    1.9K90

    ASP.NET MVC 2示例Tailspin Travel UI层分析

    Tailspin Travel设计技术比较多,今天我们来看看界面(UI)上技术,在UI层上来说主要采用技术是ASP.NET MVC2和ASP.NET DynamicData框架。...它可用于任何类型ASP.NET应用,包括基于ASP.NET Web Forms和ASP.NET MVC应用。...,以及jQuery和ASP.NET Ajax配合相关内容,可以参考 Asp.net MVC2 使用经验,性能优化建议学习。...如果字段不允许 NULL,则录入时必须录入数据。不过这里还有待改进,不允许 NULL,也就成了不允许零长度字符串,而实际应用中 NULL 和零长度字符串是两回事。...DynamicDataRoute 对象,而该 DynamicDataRoute 对象有一个参数 "Admin/{table}/{action}.aspx",另外还为该对象指定了两个属性 Constraints

    1.6K90

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    view=aspnetcore-5.0 什么是模型绑定 控制器和 Razor 页面处理来自 HTTP 请求数据。例如,路由数据可以提供一个记录键,而发布表单域可以为模型属性提供一个。...Razor在方法参数和公共属性中向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。 来源有哪些 [FromQuery] -从查询字符串获取值。...[Range]:验证属性是否在指定范围内。 [RegularExpression]:验证属性是否与指定正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过在服务器上调用操作方法来验证客户端上输入。...[Required] [Range] public class Student { [Required] [Range(1,10,ErrorMessage = "id 1-10 之间数字

    2.5K10

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    view=aspnetcore-5.0 什么是模型绑定 控制器和 Razor 页面处理来自 HTTP 请求数据。 例如,路由数据可以提供一个记录键,而发布表单域可以为模型属性提供一个。...Razor在方法参数和公共属性中向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。 来源有哪些 [FromQuery] -从查询字符串获取值。...[Range]:验证属性是否在指定范围内。 [RegularExpression]:验证属性是否与指定正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过在服务器上调用操作方法来验证客户端上输入。...[Required] [Range] public class Student { [Required] [Range(1,10,ErrorMessage = "id 1-10 之间数字

    2.6K11

    ASP.NET MVC以ModelValidator核心Model验证体系: ModelValidator

    具体在Model绑定过程中,ModelBinder通过ValueProviderModel对象某个属性提供相应属性之后,会根据定义在基于该属性Model元数据验证规则实施验证。...ASP.NET MVC整个Model验证系统以组件ModelValidator核心,或者说Model对象验证最终通过某个ModelValidator对象来完成,所以我们有必要先来认识一下ModelValidator...一般来说,当它们用于验证某个复杂类型对象时候,针对于类型本身验证返回ModelValidationResult对象MemberName属性字符串;而对于针对属性验证来说,属性名称直接作为MemberName...属性。...ValidationResult Success; 5: } 二、DataAnnotationsModelValidator 稍微了解ASP.NET MVC读者应该知道,我们可以通过数据类型某个属性上应用相应验证标注特性

    1.5K10
    领券