我正在构建一个使用默认网址路径的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
}
}
我应该在框架中点击它来教它如何做到这一点?
答案 0 :(得分:2)
从路径数据到动作参数的值的绑定由模型绑定器处理。毫无疑问,DefaultModelBinder是默认的模型绑定器。如果此类型不会将路由中的值绑定到MyType类型,那么您有两个选择: