c# - .net MVC Controller 如何解析参数

标签 c# asp.net .net asp.net-mvc

我最近发布了我的 Advanced Controller 的新版本

这基本上是一个通用 Controller (ASHX),它在 ASP.net Webforms 上的行为类似于 MVC Controller ,从某种意义上说,它接收请求并自动调用所需的内部方法,从请求查询字符串或参数中解析其参数取决于 HTTP 动词并返回结果。 它做了更多,但这是我的主要初始功能。

根据请求信息创建对象和水合作用是该项目中最痛苦的部分,但最终我达到了与对 MVC Controller 执行相同请求类似的性能。

就像我说的,.net MVC Controller 实际上做同样的事情,但我从来没有设法了解如何做。

例如,如果我对 MVC Controller 执行此 AJAX 调用:

$.ajax({
     type:'GET',
     url: 'SomeData/List'
     data:{filter: 'whatever'}
});

这将调用接收字符串过滤器属性的 Controller 方法。

但它会变得更复杂,因为我们可以调用接收复杂类型的 Controller ,具有嵌套的复杂类型和集合,并且“神奇地”在 Controller 参数中正确解析参数。

有谁知道这个管道是如何在 .net MVC 中完成的?

最佳答案

此过程称为模型绑定(bind)。有一个默认的 Model Binder,它将通过查看请求中的内容和 Controller 的期望,尝试将发布的值转换为复杂类型。

它根据约定执行此操作。显然, View 也实现了此约定,因此在将 View 和 Controller 与模型绑定(bind)器一起使用时,您不会遇到任何摩擦。

以下帖子更详细地解释了这个概念:

http://odetocode.com/blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx http://odetocode.com/blogs/scott/archive/2009/05/05/iterating-on-an-asp-net-mvc-model-binder.aspx http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx

如果您在 google 上搜索“ASP.NET MVC 模型绑定(bind)器”,您会发现有关该主题的更多信息。

关于c# - .net MVC Controller 如何解析参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809514/

相关文章:

c# - 生成动态旋转

c# - asp.net 中登录页面的必填字段验证器

asp.net - 在 Azure 应用服务 (AAS) 窗口中运行的 .NET Core 应用程序的日志流中未显示应用程序日志

c# - 有没有办法让 WPF 应用程序尊重 Windows 10 中暗/亮主题的系统选择?

c# Lock with Thread.Sleep 不工作

javascript - ASP.NET 中的 Jquery 和 Ajax 如何用模型更新 div

c# - ASP.Net 开发服务器死锁

c# - 插入 Entity Framework 后导航属性为 NULL

c# - 在数据库中存储连接字符串

c# - 用户驱动的 session 过期