【发布时间】:2011-07-13 09:25:26
【问题描述】:
我正在实现一些基本的模型绑定来填充传递给动作的对象(正常使用)。第一个 Action 是 CREATE 方法,在这种情况下,我要求所有参数都存在。
对于这个其他动作,然而它只是一个 UPDATE 方法,在这种情况下,我将接受所有表单值,但我也希望它可以只接收一个或少数几个,从而只更新指定的字段。
我相信当没有值存在时,我必须以某种方式让它们默认为 null 或 ""。但是,我的印象是模型绑定要求所有参数都在 POST 中,以便解析采用该对象的操作。
这是否可能并且我使用相同的模型对象来实现它,还是我需要制作“完整版”和“部分版”?
编辑:试图让这一点更清楚:
现在如果我有这个动作:
公共 ActionResult MyAction(MyObject obj)
MyObject 对象有 3 个变量:var1、var2 和 var3
如果我 POST 到 MyAction 并且只包含 var1 和 var2,它将无法解析,因为模型绑定没有找到 var3
但是,我希望它以这种方式工作!这样,如果有人只想发布 var1(连同一些 ID),我可以在数据库中查找对象并更新对象的 var1,而单独留下 var2 和 var3,我只是想弄清楚如何获取模型绑定当表单值丢失时正确解决。
【问题讨论】:
-
你的问题对我来说毫无意义。也许如果你展示一些代码,它会变得更容易理解。
-
@DarinDimitrov 添加了更多细节
-
您希望它解决什么问题?
var3没有在请求中发送,因此模型绑定器将其解析为可能的最佳值:null。我看不出你有什么问题? -
@DarinDimitrov 这正是我希望它的行为方式,但是当我尝试时,我实际上得到“没有为此对象定义无参数构造函数。”
-
您为哪个对象获得了此异常?
MyObject?如果是这种情况,您有两种可能性:1. 添加一个默认构造函数(无论如何,这对您的视图模型来说都是很好的做法)或 2. 为MyObject类型编写一个自定义模型绑定器。