gpt4 book ai didi

model-binding - mvc6 自定义模型 Binder 不触发

转载 作者:行者123 更新时间:2023-12-01 12:35:42 25 4
gpt4 key购买 nike

我正在尝试找出当前 mvc6(visual studio 2015 候选版本)中的模型绑定(bind)。这是我的代码到目前为止的样子:

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));
});
}

我的 Controller :

[HttpPost]
public void ReceiveMyObject([FromBody] MyObject x)
{

}

我还不关心从输入实际创建对象,让我烦恼的是,当我调试时,我看到 Controller 正在触发(x 为 null),但是联编程序函数没有被调用。有什么问题吗?

[编辑:这已经更新]另请注意,我已经看到 What is the correct way to create custom model binders in MVC6?但该帖子中的答案是错误的或过时的,因为提供的示例未实现当前的 IModelBinder。

谢谢

编辑:这是用于触发 Controller 的 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) }
});
}

最佳答案

添加

public void ReceiveMyObject([ModelBinder(BinderType = typeof(MyObjectModelBinder))] MyObject x)

方法或者你可以为类型设置默认 Binder

关于model-binding - mvc6 自定义模型 Binder 不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com