SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • Sali Kaceli

    Sali Kaceli

    24 ŞUBAT 2009
  • UniqueApps

    UniqueApps

    4 Ocak 2009