【发布时间】:2012-02-26 04:47:52
【问题描述】:
在 ASP.NET MVC3 应用程序中,如果我想将我的表单发布数据建模绑定到 ExpandoObject(或我自己的从 DynamicObject 派生的对象,我在其中实现自己的 Try... 成员),我需要编写我自己的自定义模型绑定器?
如果我这样做:
public ActionResult Save(ExpandoObject form)
{
....
}
form 的值为null。
或者如果我有:
public class MyDynamicThing : DynamicObject
{
public int Id { get; set; }
public override bool TrySetMember(SetMemberBinder binder, object value)
{
// Set breakpoint here but doesn't get hit when model binding
return base.TrySetMember(binder, value);
}
}
...在我的控制器中:
public ActionResult Save(MyDynamicThing form)
{
....
}
在上面的示例中,Id 设置为表单中的值。但是,如果我在 TrySetMember 中设置断点,则不会受到影响。
我可以调用任何神奇的咒语来强制内置模型绑定器与ExpandoObjects 或我自己从DynamicObject 派生的类一起工作吗?
我可以求助于获取原始表单发布集合,但我必须将此数据序列化为 JSON,这意味着获取这些值需要一个额外且不整洁的步骤。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 model-binding