在 WebApi 中,我可以用以下方法装饰控制器操作上的参数[FromUri]
如果愿意的话,将 URI 的组件“反序列化”到 POCO 模型中;又名模型绑定。
尽管从 2.0 开始就使用 MVC,但我从未将它用于网站(我不知道为什么)。在 ASP.NET MVC 5 中它的等价物是什么?
除非我需要引用库,否则 IDE 似乎无法识别该属性。
我想要~/thing/2014/9
绑定到以下模型:
public class WhateverModel
{
public int Year { get; set; }
public int Month { get; set; }
}
Thanks
Update
在另一个问题(上面的链接)中,OP 说:
但是,将其切换为普通 MVC 而不是 WebApi,默认模型绑定器将崩溃并且无法绑定嵌套数组中对象的属性
这意味着他正在使用 WebApi 中的属性。我猜。我没有这些参考资料,因为我在 MVC 中,那么 (ab) 使用 WebApi 的版本是在 MVC 中执行此操作的可接受方法吗?
Update 2
该问题的答案是:
您需要构建符合 MVC 模型绑定器命名约定的查询字符串。
此外[FromUri]
示例操作中的属性被完全忽略,因为 MVC DefaultModelBinder 不知道它
所以我仍然不知道该怎么做,也不知道OP在这个问题中到底在谈论什么,如果他用错误的属性取得了一些成功。
我想我希望得到一个明确的答案,而不是其他问题的混乱。
一切顺利™:
[HttpGet]
public ActionResult Thing(WhateverModel model)
{
// use model
return View();
}
至少,当使用 URL 时/thing?Year=2014&Month=9
.
问题是你的路由。网址/thing/2014/9
不会使用 MVC 的默认路由进行映射,因为/{controller}/{action}/{id}
, where {id}
是一个可选的int
.
最简单的方法是使用属性路由:
[HttpGet]
[Route("/thing/{Year}/{Month}"]
public ActionResult Thing(WhateverModel model)
{
// use model
return View();
}
这会将 URL 映射到您的模型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)