.net mvc url中的自定义类型

时间:2009-09-24 12:05:01

标签: asp.net-mvc url-routing

我正在构建一个使用默认网址路径的asp.net mvc应用 «/ {控制器} / {行动} / {ID}»

我的问题是这条路线中的最后一项,即id。 mvc框架自动将id中的任何内容转换为action中声明的参数类型。

示例:

url:/ mycontroller / myaction / 1

public class mycontroller:Controller {

    public ActionResult myaction(int id)
    {
      // it works id == 1
    }

}

但是如果我在动作中声明自定义类型的参数,则mvc框架无法将路径的最后部分映射到参数。

示例:

url:/ mycontroller / myaction / xpto

public class mycontroller:Controller {

    public ActionResult myaction(MyType id)
    {
      // it fails to cast "xpto" to my type
    }

}

我应该在框架中点击它来教它如何做到这一点?

1 个答案:

答案 0 :(得分:2)

从路径数据到动作参数的值的绑定由模型绑定器处理。毫无疑问,DefaultModelBinder是默认的模型绑定器。如果此类型不会将路由中的值绑定到MyType类型,那么您有两个选择:

  • 更改您在路径中传递的日期,以便DefaultModelBinder可以将其转换为MyType实例而无需修改,或
  • 编写自定义模型绑定器,并将其设置为MyType类型的模型绑定器。如果你使用Google ASP.NET MVC和模型绑定器,你会发现这个例子。