MonoRail BindObject() 在 ASP MVC3 中等效吗?

发布于 2024-12-13 16:54:35 字数 490 浏览 1 评论 0原文

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

MonoRail 通过允许您手动绑定来解决这个问题 当需要时,这正是我所遇到的场景,所以我想知道 MVC3 中是否有类似的东西可用?

我无法重载该操作,因为它会因模糊调用而崩溃,我无法发布到不同的操作,因为表单都是动态内容,所以我看到唯一的选择是滚动我自己的验证/绑定机制,拉出数据注释以进行验证....嘘:(

I need to do late binding of a complex type with DataAnnotations within an Action if condition X is true. I cant bind everything up front in the method params as a couple of them will not exist unless X == true so Model.IsValid will be false (since it tried to bind non existant params) due to validation failing on the complex type.

MonoRail solved this by allowing you to manually bind when needed, this is the exact scenario i have so im wondering if theres something similar available in MVC3?

I cant overload the Action as it blows up with an ambiguous call, i cant post to a different action as the form is all dynamic content, so i see the only alternative is rolling my own validation / binding mechanism pulling out data annotations to validate with.... boooo :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲鸠 2024-12-20 16:54:35

我认为您需要的是 ControllerBase.TryUpdateModel< /a> 方法(它有很多重载)。
您可以像 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();
}

I think what you need is the ControllerBase.TryUpdateModel method (it has a lots of overloads).
You can use it similarly like BindObject:

Some model:

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

    public string Description { get; set; }
}

In the controller action:

[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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文