gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:38:22 29 4
gpt4 key购买 nike

在 WebApi 中,我可以使用 [FromUri] 修饰 Controller 操作上的参数,以便将 URI 的组件“反序列化”到 POCO 模型中;又名模型绑定(bind)。

尽管从 2.0 开始使用 MVC,但我从未将它用于网站(我不知道为什么)。它在 ASP.NET MVC 5 中的等效项是什么?

IDE 似乎无法识别该属性,除非我需要引用库。

我希望 ~/thing/2014/9 绑定(bind)到下面的模型:

public class WhateverModel
{
public int Year { get; set; }
public int Month { get; set; }
}

谢谢

更新

在另一个问题(上面的链接)中,OP 说:

However, switch this to plain MVC not WebApi and the default model binder breaks down and cannot bind the properties on objects in the nested array

这意味着他正在使用 WebApi 中的属性。我猜。我没有这些引用资料,因为我在 MVC 中,所以(ab)使用 WebApi 的版本是在 MVC 中执行此操作的可接受方式吗?

更新 2

这个问题的答案是:

You need to construct your query string respecting MVC model binder naming conventions.

Additionally [FromUri] attribute in your example action is completely ignored, since it's not known to MVC DefaultModelBinder

所以我仍然不知道该怎么做,或者 OP 在那个问题中到底在谈论什么,如果他用错误的属性取得了一些成功。

我想我希望得到一个明确的答案,而不是其他问题的泥泞。

最佳答案

It'll Just Work™:

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

关于c# - ASP.NET MVC 中的 WebApi [FromUri] 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766336/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com