在对C#Controller Action发出POST请求之前会发生什么

时间:2018-01-31 18:59:13

标签: c# asp.net-mvc

我有一个页面,它将序列化表单提交给Controller Action:

$.post('@this.Url.Action("MyMethod", "MyController")', $form.serialize()).done(...

控制器方法如下所示:

[HttpPost]
[ActionName("MyMethod")]
public async Task<JsonResult> MyMethodAsync(SomeViewModel someViewModel)
{ ...

我已经为我的ViewModel添加了一个无参数构造函数:

public SomeViewModel()
{
}

但是,在尝试逐步执行我的Controller Action(MyMethod)时,由于某些ViewModel属性中的null错误,断点永远不会被命中。我想知道:

  1. 为什么在我发布POST的Action方法之前调用无参数构造函数?如果可能的话,我想在此之前设置一个断点

  2. 为什么光标会立即从无参数构造函数转到类中的属性?这只是隐含在使用无参数构造函数实例化实例的流程中吗?

1 个答案:

答案 0 :(得分:3)

如果我们只是看到一张图片,那就容易理解了:

enter image description here

正如您所看到的,模型绑定(将请求与您的参数绑定的内容)会在 您的操作被调用之前发生。否则,您的参数中只有null个值 您的第二个问题可能就是Visual Studio如何显示解串器的工作原理。请记住,必须先创建一个对象,然后才能更改其成员。