Luk*_*ett 21 c# asp.net-mvc model-binding asp.net-mvc-routing
在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; }
}
Run Code Online (Sandbox Code Playgroud)
谢谢
更新
在另一个问题(上面的链接)中,OP说:
但是,将其切换为普通MVC而不是WebApi,并且默认模型绑定器会崩溃,并且无法绑定嵌套数组中对象的属性
这意味着他正在使用WebApi中的属性.我猜.我没有这些引用,因为我在MVC中,所以(ab)使用WebApi的版本是否可以在MVC中执行此操作?
更新2
在这个问题的答案是:
您需要构建关于MVC模型绑定器命名约定的查询字符串.
此外
[FromUri],示例操作中的属性完全被忽略,因为MVC DefaultModelBinder不知道它
因此,如果他在错误的属性上取得了一些成功,那么我仍然不知道OP在该问题上该做什么或在地球上做什么.
我想我希望得到一个明确的答案,而不是那个问题的泥泞.
Cod*_*ter 30
它只是Just Work™:
[HttpGet]
public ActionResult Thing(WhateverModel model)
{
// use model
return View();
}
Run Code Online (Sandbox Code Playgroud)
至少,在使用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();
}
Run Code Online (Sandbox Code Playgroud)
这会将URL映射到您的模型.
| 归档时间: |
|
| 查看次数: |
16931 次 |
| 最近记录: |