gpt4 book ai didi

asp.net - 小数和整数的自定义模型绑定(bind)器 : How to get the string value before MVC and do a smarter conversion

转载 作者:行者123 更新时间:2023-12-01 00:32:32 27 4
gpt4 key购买 nike

我想扩展默认模型绑定(bind),使其在处理数字时更加智能。当游戏中的逗号和小数点时,默认值非常糟糕。

我正在尝试做一个新的 Binder

Public Class SmartModelBinder
Inherits DefaultModelBinder
Protected Overrides Sub SetProperty(controllerContext As ControllerContext, bindingContext As ModelBindingContext, propertyDescriptor As System.ComponentModel.PropertyDescriptor, value As Object)
If propertyDescriptor.PropertyType Is GetType(Decimal) Or propertyDescriptor.PropertyType Is GetType(Decimal?) Then
If value Is Nothing Then
value = 0
End If
End If

MyBase.SetProperty(controllerContext, bindingContext, propertyDescriptor, value)
End Sub
End Class

但是此时值已经转换了

如何扩展 Binder 以从表单中获取字符串值并执行不同的转换?

最佳答案

这个怎么样?

ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder())

还有一个自定义 Binder 。我想我不知道你是否可以通过这种方式覆盖十进制绑定(bind),但它适用于我自己的类型。

public class DecimalModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult == null)
{
return base.BindModel(controllerContext, bindingContext);
}
// to-do: your parsing (get the text value from valueProviderResult.AttemptedValue)
return parsedDecimal;
}
}

关于asp.net - 小数和整数的自定义模型绑定(bind)器 : How to get the string value before MVC and do a smarter conversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5320493/

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