如何将minOccurs设置为1

时间:2009-07-20 23:22:15

标签: asp.net .net web-services wsdl asmx

我正在构建一个ASP.NET Web服务。

我的代码定义如下,但我无法弄清楚如何指定wsdl来指定FirstName和LastName属性的minOccurs。我希望那些是必需的,不能是空的。有可能吗?

[WebMethod()]
public void TestMethod(TestClass Test)
{
    ...
}

[Serializable]
public class TestClass
{
    public string FirstName { get; set; }
    public string LastName { get; set; }    
}

3 个答案:

答案 0 :(得分:2)

事实证明,WSDL不用于验证传入的XML。无论你是否可以指定minOccurs都没关系 - 它不会用于验证输入。

答案 1 :(得分:0)

字符串是引用类型,因此根据定义可以为空。如果你的属性是一个整数minoccurs就是1。

你可以通过put强制Serializer不允许它为null。 [XmlElement(“name”,IsNullable = false)]
在酒店上方。

编辑:我的意思是引用类型而不是值类型。 Thnx Joren!

答案 2 :(得分:0)

我已在另一个有相同问题的帖子上发布详细答案:How to make a dotnet webservice set minOccurs=“1” on a string value

但字符串的答案是

在没有 nullable = true 的情况下, minOccurs = 1 的唯一方法是声明一个无默认值的属性(字符串具有默认值) String.Empty 没有属性来检查是否指定了值(使相同的属性名称附加了“Specified”字)。

如果John Saunders的回答是真的,你仍然有限。

  

事实证明,WSDL不用于验证传入的XML。无论你是否可以指定minOccurs都没关系 - 它不会用于验证输入。