18 NİSAN 2011, PAZARTESİ
Varsayılan't bağlama ondalık özellikleri yok ASP.NET MVC 3 model binder
Bir eylem bu JSON gönderdiğim nedense:
{"BaseLoanAmount": 5000}
hangi ondalık bir özellik "" bağlama değil, sadece 0 kalır. BaseLoanAmount adında bir modele bağlı olması mı gerekiyor Ama eğer gönderirsem:
{"BaseLoanAmount": 5000.00}
bağlama özelliği, ama neden? Değil 5000, ondalık sayılar var değil mi ondalık bir olay dönüştürülebilir?
CEVAP
22 NİSAN 2011, Cuma
Sonra adım içine asp.net mvc kaynak kodu, seemsd sorun olduğu için dönüşüm asp.net mvc kullanır çerçevesinde bu tür dönüştürücü, nedense false için bir int ondalık dönüşüm, sona erdi kullanarak bir özel model binder sağlayıcı ve model Ciltçi için ondalıklar, görüyorsun işte
public class DecimalModelBinder : DefaultModelBinder
{
#region Implementation of IModelBinder
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (valueProviderResult.AttemptedValue.Equals("N.aN") ||
valueProviderResult.AttemptedValue.Equals("NaN") ||
valueProviderResult.AttemptedValue.Equals("Infini.ty") ||
valueProviderResult.AttemptedValue.Equals("Infinity") ||
string.IsNullOrEmpty(valueProviderResult.AttemptedValue))
return 0m;
return valueProviderResult == null ? base.BindModel(controllerContext, bindingContext) : Convert.ToDecimal(valueProviderResult.AttemptedValue);
}
#endregion
}
Bu ModelBinder kaydetmek için, sadece Application_Start()
içinde aşağıdaki satırı koyun:
ModelBinders.Binders.Add(typeof(decimal), new DecimalModelBinder());
ModelBinders.Binders.Add(typeof(decimal?), new DecimalModelBinder());
Bunu Paylaş:
Model ASP.NET MVC 3 Çeteleler Bağlama...
Raylar bir model için varsayılan sıral...
Nerede Özellikleri vardır.Varsayılan.A...
ASP.NET MVC: veri girişi sonra dizeler...
Raylar has_many :Birleşim Model Ekstra...