Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP MVC3中的MonoRail BindObject()等效项?_Asp.net Mvc 3_Model Binding - Fatal编程技术网

Asp.net mvc 3 ASP MVC3中的MonoRail BindObject()等效项?

Asp.net mvc 3 ASP MVC3中的MonoRail BindObject()等效项?,asp.net-mvc-3,model-binding,Asp.net Mvc 3,Model Binding,如果条件X为真,我需要在操作中使用DataAnnotation对复杂类型进行后期绑定。我无法预先绑定方法参数中的所有内容,因为除非X==true,否则其中的两个参数将不存在,因此Model.IsValid将为false(因为它试图绑定不存在的参数),因为复杂类型的验证失败 MonoRail解决了这个问题,它允许您在需要时使用它,这正是我所拥有的场景,所以我想知道MVC3中是否有类似的功能 我不能让动作过载,因为它会被一个模棱两可的调用破坏,我不能发布到另一个动作,因为表单都是动态内容,所以我认为

如果条件X为真,我需要在操作中使用DataAnnotation对复杂类型进行后期绑定。我无法预先绑定方法参数中的所有内容,因为除非X==true,否则其中的两个参数将不存在,因此Model.IsValid将为false(因为它试图绑定不存在的参数),因为复杂类型的验证失败

MonoRail解决了这个问题,它允许您在需要时使用它,这正是我所拥有的场景,所以我想知道MVC3中是否有类似的功能


我不能让动作过载,因为它会被一个模棱两可的调用破坏,我不能发布到另一个动作,因为表单都是动态内容,所以我认为唯一的替代方法是滚动我自己的验证/绑定机制,拉出数据注释以进行验证。。。。boooo:(

我想你需要的是方法(它有很多重载)。 您可以像
BindObject
一样使用它:

一些型号:

public class MyModel
{
    [Required]
    public string Name { get; set; }

    public string Description { get; set; }
}
在控制器操作中:

[HttpPost]
public ActionResult UpdateModel(bool? acceptedConditions)
{
    var model = new MyModel();
    if (acceptedConditions ?? false)
    {
         if (TryUpdateModel(model))
         {
             //Do something when the model is valid
         }
         else
         {
             //Do something else when the model is invalid
         }

    }   
    return View();
}