代码之家  ›  专栏  ›  技术社区  ›  Eli Bendersky

如何强制C#web服务对象属性中的最大字符串长度?

  •  4
  • Eli Bendersky  · 技术社区  · 16 年前

    public class Person
    {
         public string FirstName { get; set; }
         public string LastName { get; set; }
    }
    

    有没有办法强制对名字或姓氏进行字符串限制,所以 当客户端序列化此 在发送给我之前,如果违反了长度限制,它会给他们一个错误吗?

    更新:这需要在WSDL本身中标识和强制执行,而不是在我收到无效数据之后。

    3 回复  |  直到 16 年前
        1
  •  11
  •   Jason    13 年前

    尸检时间。。。不过值得一提。

    using System.ComponentModel.DataAnnotations;
    public class Person
    {
         [StringLength(255, ErrorMessage = "Error")]
         public string FirstName { get; set; }
         [StringLength(255, ErrorMessage = "Error")]
         public string LastName { get; set; }
    }
    
        2
  •  3
  •   Mark Cidade    8 年前

    您可以应用XML模式验证(例如。, 最大长度 方面)使用 SOAP Extensions :

    [ValidationSchema("person.xsd")]
    public class Person { /* ... */ }
    
    <!-- person.xsd -->
    
    <?xml version="1.0"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
      <xsd:element name="Person" type="PersonType" />
    
      <xsd:simpleType name="NameString">
         <xsd:restriction base="xsd:string">
            <xsd:maxLength value="255"/>
         </xsd:restriction>
      </xsd:simpleType>
    
      <xsd:complexType name="PersonType">
        <xsd:sequence>
             <xsd:element name="FirstName" type="NameString" maxOccurs="1"/>
             <xsd:element name="LastName"  type="NameString" maxOccurs="1"/>
         </xsd:sequence>
      </xsd:complexType>
    </xsd:schema>
    
        3
  •  0
  •   Mitchel Sellers    16 年前

    从auto属性转换属性并亲自验证它,然后可以抛出参数异常或类似的异常,它们必须在提交之前处理这些异常。