验证同一ActionResult中的多个视图模型

时间:2013-05-14 19:22:33

标签: asp.net-mvc asp.net-mvc-4

我是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中实现此类功能或类似功能的最佳实践是什么?

2 个答案:

答案 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

[2] http://forums.asp.net/t/1480118.aspx/1