在URL中.NET MVC自定义类型(.net mvc custom types in urls)

2019-10-30 09:37发布

我建设使用默认的URL路由一个asp.net MVC应用程序«/ {控制器} / {行动} / {ID}»

我的问题是,在这条路线的最后一个项目,该ID。 MVC框架中投放ID在行动中声明的参数的类型自动转换什么的。

例:

网址:/ myController的/ myaction / 1

公共类myController的:控制器{

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

}

但是,如果我在行动宣告自定义的参数类型的MVC框架是无法将参数路线的最后部分映射。

例:

网址:/ myController的/ myaction / xpto

公共类myController的:控制器{

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

}

我应该在哪里在框架挖掘教它怎么办呢?

Answer 1:

从路由数据值绑定到一个操作参数是由模型粘合剂处理。 默认的模型粘合剂,勿庸置疑,DefaultModelBinder。 如果这种类型不会在你的路线,你的MyType类型的值绑定,那么你有两种选择:

  • 更改所传递路线的日期,以便DefaultModelBinder可以将其转换为MyType的实例未经修改,或
  • 编写自定义的模型绑定,并设置它作为您的MyType类型模型绑定。 如果谷歌ASP.NET MVC和模型粘合剂,你会发现这样的例子。


文章来源: .net mvc custom types in urls