![](/img/trans.png)
[英]What is the equivalent of HttpServiceHost in ASP.NET WebAPI?
[英]What's the WebApi [FromUri] equivalent in ASP.NET MVC?
在 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; }
}
谢谢
更新
在另一个问题(上面的链接)中,OP 说:
但是,将其切换为普通 MVC 而不是 WebApi,并且默认模型绑定器会崩溃,无法绑定嵌套数组中对象的属性
这意味着他正在使用来自 WebApi 的属性。 我猜。 我没有这些参考资料,因为我在 MVC 中,所以(ab)使用 WebApi 的版本是在 MVC 中执行此操作的公认方式吗?
更新 2
这个问题的答案是:
您需要构建符合 MVC 模型绑定器命名约定的查询字符串。
此外,您的示例操作中的
[FromUri]
属性被完全忽略,因为 MVC DefaultModelBinder 不知道它
所以我仍然不知道该怎么做,或者 OP 在这个问题上到底在谈论什么,如果他用错误的属性获得了一些成功。
我想我希望得到一个明确的答案,而不是其他问题的泥泞。
它会起作用™:
[HttpGet]
public ActionResult Thing(WhateverModel model)
{
// use model
return View();
}
至少,当使用 URL /thing?Year=2014&Month=9
。
问题是你的路由。 URL /thing/2014/9
不会使用 MVC 的默认路由映射,因为它是/{controller}/{action}/{id}
,其中{id}
是可选的int
。
最简单的方法是使用属性路由:
[HttpGet]
[Route("/thing/{Year}/{Month}"]
public ActionResult Thing(WhateverModel model)
{
// use model
return View();
}
这会将 URL 映射到您的模型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.