我正在尝试找出当前 mvc6(visual studio 2015 候选版本)中的模型绑定。这是我的代码到目前为止的样子:
public class MyObjectModelBinder : IModelBinder
{
public Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext.ModelType == typeof(MyObject))
{
var model = new MyObject();
return Task.FromResult(new ModelBindingResult(model, bindingContext.ModelName, true));
}
return Task.FromResult<ModelBindingResult>(null);
}
}
在startup.cs中注册
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
options.ModelBinders.Add(typeof( MyObjectModelBinder));
});
}
我的控制器:
[HttpPost]
public void ReceiveMyObject([FromBody] MyObject x)
{
}
我还不关心从输入中实际创建对象,让我烦恼的是,当我调试时,我看到控制器正在触发(x 为空),但没有调用活页夹函数。关于这里有什么问题的任何想法?
[编辑:这已经更新]另外请注意,我已经看到在 MVC6 中创建自定义模型绑定器的正确方法是什么?但是该帖子中的答案要么错误,要么已过时,因为提供的示例未实现当前的 IModelBinder。
谢谢
编辑:这是用于触发控制器的 javascript 代码:
function sendMessage(i) {
$.ajax({
type: 'POST',
url: 'myurl',
data: data,
contentType: 'application/x-www-form-urlencoded',
dataType: 'json',
success: function (data) { console.log(data) }
});
}