使用ModelBinder通过ID获取对象

时间:2008-12-19 11:59:57

标签: asp.net-mvc

我有多个带ID的控制器操作

public ActionResult Get(int? id) {
...
}

public ActionResult Delete(int id) {
...
}

public JsonResult GetJson(int? id) {
...
}

我正在考虑在每个动作上使用ModelBinder(SomeObjectFromIDModelBinder)的最佳实践,因此获取对象与控制器分离,并使动作方法保持较小。

我不希望它被称为SomeObjectModelBinder的原因是因为我还需要从JSON重新创建模型,所以有一个SomeObjectFromJsonModelBinder来处理从JSON字符串重新创建'SomeObject'。

我认为这是ModelBinders(命名约定)的合适用法,但只是想澄清一下。想法?

2 个答案:

答案 0 :(得分:0)

您无需执行任何操作即可获取ID。 MVC处理程序将查找与表单数据,查询字符串和路径中的方法参数同名的简单值。 所以你可以有一个路由/ {controller} / {action} / {id},其默认值为action =“Get”,id = 1。 然后可以在URL中将id指定为/ Home / Get / 3或/ Home / Delete?id = 6.

或者,您可以使用ID为“id”的文本框和发布到“/ Home / Get”的表单中的提交按钮。

ModelBinder旨在通过创建实例并从表单数据,查询字符串或路径数据中填充属性来允许您拥有类的操作方法。

答案 1 :(得分:0)

我已经决定做我要求的事情是可以接受的,并且有多个将不同数据绑定到模型的ModelBinder。