在 MVC 中,WebApi [FromUri] 等价 ASP.NET 是什么?



在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映射到您的模型。

最新更新