我试图使用注释和一些自定义代码验证嵌套对象(不是MVC senss中的模型).
我发现以下帖子很有用
正如在答案中所建议的,我在容器类中创建了一个额外的例程来验证嵌套对象.这是我修改过的测试代码
public class Customer : IValidatableObject
{
public Customer()
{
Details = new CustomerDetails();
}
[Required]
[MaxLength(2)]
public string Name
{
get;
set;
}
public CustomerDetails Details
{
get;
private set;
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var context = new ValidationContext(this.Details, validationContext.ServiceContainer, validationContext.Items);
var results = new List<ValidationResult>();
Validator.TryValidateObject(this.Details, context, results);
return results;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,即使在将validateAllProperties设置为true的情况下调用TryValidateObject时,我也无法获得所有验证错误.
var context = new ValidationContext(cs, null, null);
var results = new List<ValidationResult>();
Validator.TryValidateObject(cs, context, results,true);
Run Code Online (Sandbox Code Playgroud)
如果容器中有任何错误,则只显示这些错误.仅当容器对象中没有错误时,才会显示嵌套对象中的错误.我怀疑它与Validate rouine有关,返回一个完整的列表,而且无法从容器中添加(现有)列表(?) …
我想用这样的属性创建soapVars:
<tag attr="xxx">yyy</tag>
Run Code Online (Sandbox Code Playgroud)
这是否可以使用SoapVar构造函数,但不使用XSD_ANYXML和原始xml字符串?
如果我将表单发布到包含ID的目标URL,例如
/mycontroller/createItemAndAddTo/5
Run Code Online (Sandbox Code Playgroud)
如何到达ActionResult子例程中的Id(=5)[HttpPost](将模型作为参数)
我想Id从POST数据/表单中删除它,并从URL中获取它,因为它已存在于那里
在这种情况下,Id是一个外键,我通常将其作为隐藏字段包含在内,但它似乎没有必要,因为它已经包含在内