gpt4 book ai didi

c# - AspNet Core RC2 模型绑定(bind)给出空模型

转载 作者:行者123 更新时间:2023-11-30 16:48:42 24 4
gpt4 key购买 nike

我正在使用 ASP.NET CORE RC2,我有以下模型绑定(bind)器:

public class MovieModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext.ModelType == typeof(MovieViewModel))
{
var idValue = bindingContext.ValueProvider.GetValue("Id").FirstValue;
var nameValue = bindingContext.ValueProvider.GetValue("Name").FirstValue;

var timespanProperty = bindingContext.ModelMetadata.Properties.Single(p => p.PropertyName == "Length");
var timespanValue = bindingContext.ValueProvider.GetValue(timespanProperty.PropertyName).FirstValue;

int minutes;
int.TryParse(timespanValue, out minutes);

int id;
int.TryParse(idValue, out id);

var model = new MovieViewModel
{
Length = TimeSpan.FromMinutes(minutes),
Id = id,
Name = nameValue
};

return Task.FromResult(ModelBindingResult.Success(bindingContext.ModelName, model));
}

return Task.FromResult(default(ModelBindingResult));
}
}

我在这样的 Controller 操作上使用它:

[HttpPost]
public IActionResult Create([ModelBinder(BinderType = typeof(MovieModelBinder))] MovieViewModel model)
{
// Code here
}

问题是我每次都得到一个空模型。 ModelBindingResult.Success 方法究竟有什么问题?应该进行哪些更改才能返回正确的结果?

最佳答案

我不确定哪里出了问题,对我来说相同的代码在 rc2 更新后停止工作。

对于解决方法,只需手动分配:

bindingContext.Result = ModelBindingResult.Success(bindingContext.ModelName, model); 

之前

return Task.FromResult(...)

关于c# - AspNet Core RC2 模型绑定(bind)给出空模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830562/

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