4

我最近发布了我的高级控制器的新版本

这基本上是一个通用控制器 (ASHX),它在 ASP.net Webforms 上起作用,就像 MVC 控制器一样,它接收请求并自动调用所需的内部方法,根据请求查询字符串或参数解析其参数HTTP 动词并返回结果。它做的更多,但这是我主要的初始功能。

请求信息中的对象创建和水合是项目中最痛苦的部分,但最终我达到了与对 MVC 控制器执行相同请求的相似性能。

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

例如,如果我对 MVC 控制器执行此 AJAX 调用:

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

这将调用一个接收字符串过滤器属性的控制器方法。

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

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

4

1 回答 1

4

这个过程称为模型绑定。有一个默认的模型绑定器会尝试通过查看请求中的内容和控制器的期望将发布的值转换为复杂类型。

它基于约定来执行此操作。显然,视图也实现了这个约定,因此在将视图和控制器与模型绑定器一起使用时不会有任何摩擦。

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

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

如果你在谷歌上搜索“ASP.NET MVC 模型绑定器”,你会发现更多关于这个主题的信息。

于 2013-05-29T09:00:33.233 回答