繁体   English   中英

什么是 ASP.NET MVC 中的 WebApi [FromUri] 等价物?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM