实际上,在我的.NET Core项目中,我使用的是简单的Modelbinder来修剪输入字符串
<style>
svg {
width: 100px;
display: block;
margin: 40px auto 0;
}
.path {
stroke-dasharray: 1000;
stroke-dashoffset: 0;
&.circle {
-webkit-animation: dash .9s ease-in-out;
animation: dash .9s ease-in-out;
}
&.line {
stroke-dashoffset: 1000;
-webkit-animation: dash .9s .35s ease-in-out forwards;
animation: dash .9s .35s ease-in-out forwards;
}
&.check {
stroke-dashoffset: -100;
-webkit-animation: dash-check .9s .35s ease-in-out forwards;
animation: dash-check .9s .35s ease-in-out forwards;
}
}
p {
text-align: center;
margin: 20px 0 60px;
font-size: 1.25em;
&.success {
color: #73AF55;
}
&.error {
color: #D06079;
}
}
@-webkit-keyframes dash {
0% {
stroke-dashoffset: 1000;
}
100% {
stroke-dashoffset: 0;
}
}
@keyframes dash {
0% {
stroke-dashoffset: 1000;
}
100% {
stroke-dashoffset: 0;
}
}
@-webkit-keyframes dash-check {
0% {
stroke-dashoffset: -100;
}
100% {
stroke-dashoffset: 900;
}
}
@keyframes dash-check {
0% {
stroke-dashoffset: -100;
}
100% {
stroke-dashoffset: 900;
}
}
</style>
我通过IModelBinderProvider使用它,它在输入字符串类型时非常有效。但是我注意到,当输入有这样的字符串集合时,它不会被触发
public class StringModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null)
throw new ArgumentNullException(nameof(bindingContext));
ValueProviderResult valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult != ValueProviderResult.None)
{
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueProviderResult);
string valueAsString = string.IsNullOrWhiteSpace(valueAsString) ? null : valueAsString.Trim();
bindingContext.Result = ModelBindingResult.Success(valueAsString);
}
return Task.CompletedTask;
}
}
要执行此操作,我认为我应该使用类似的
public IActionResult CollectionTrimTest([FromBody] List<string> values)
但是我真的不知道如何实现CollectionModelBinder来基于字符串集合修剪结果。当然,将非常感谢在StringModelBinder和CollectionModelBinder之间集中修剪逻辑。
答案 0 :(得分:0)
已解决,似乎[FromBody]必须需要一个JsonConverter。有关更多信息,请访问https://stackoverflow.com/a/54663595/4963176