我是MVC的新手。我有一个ActionResult接受来自客户端的请求,我正在尝试使用MVC验证和模型绑定魔术。此操作不会返回视图,而是根据特定逻辑重定向到其他操作。
我的问题是,有不同类型的请求与不同的模型相关联,并且这些模型是互斥的。
示例:
class Model1
{
[Required]
public string PropA;
}
class Model2
{
[Required]
public string PropB;
}
ActionResult内部的逻辑将遵循以下内容:
If Model1 is valid then RedirectToAction("A")
Elseif Model2 is valid then RedirectToAction("B")
Else RedirectToAction("ERROR")
在ASP.NET MVC4中实现此类功能或类似功能的最佳实践是什么?
答案 0 :(得分:1)
您应该能够创建验证上下文并验证控制器中的每个viewmodel。您必须为每个视图模型执行以下操作:
var validationResults = new List<ValidationResult>();
var context = new ValidationContext(myObject);
bool validationPassed = Validator.TryValidateObject(myObject, context, validationResults, true);
答案 1 :(得分:0)
您可以检查模型状态,看看它是否有来自控制器内部的错误:
bool hasErrors = ViewData.ModelState.Values.Any(x => x.Errors.Count > 1);
[1] http://msdn.microsoft.com/en-us/library/dd470776(v=vs.108).aspx