Проверка на стороне клиента MVC 3, десятичное значение привязки модели и культура (другой десятичный разделитель)

Я пытаюсь провести проверку на стороне клиента (привязку модели) для поддержки различных культур и нашел интересный блог на эту тему, которую я пытаюсь внедрить.

http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx

Poco

  public class Jogador
  {
    public int ID { get; set; }

    public string Name { get; set; }

    public decimal Salary { get; set; }
  }

У меня есть собственный класс DecimalModelBinder

  public class DecimalModelBinder : IModelBinder
  {
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
      ValueProviderResult valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
      ModelState modelState = new ModelState {Value = valueResult};

      object actualValue = null;
      try
      {
        actualValue = Convert.ToDecimal(valueResult.AttemptedValue, CultureInfo.CurrentCulture);
      }
      catch (FormatException e)
      {
        modelState.Errors.Add(e);
      }

      bindingContext.ModelState.Add(bindingContext.ModelName, modelState);
      return actualValue;
    }
  }

Мой web.config :


  
    
    
    
    
    
  



  



  
    
    
    
    
    
    
  

Global.asax изменен для использования моего пользовательского ModelBinder в десятичном и десятичном формате? values ​​

protected void Application_Start()
{
  AreaRegistration.RegisterAllAreas();

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

  RegisterGlobalFilters(GlobalFilters.Filters);
  RegisterRoutes(RouteTable.Routes);
}

Тем не менее, проверка на стороне клиента завершается ошибкой для десятичного числа, введенного в моем представлении с "," в качестве десятичного разделителя. Он не обрабатывает как «,», так и «.». Проверка js, похоже, не принимает во внимание мою пользовательскую привязку.

Перечитывая статью в блоге снова и снова, я просто не могу понять, что мне не хватает.

Вот мнение:

@model MVC_Empty.Web.Models.Jogador

@{
    ViewBag.Title = "Create";
}

Create

@using (Html.BeginForm()) { @Html.ValidationSummary(true)
Jogador
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name)
@Html.LabelFor(model => model.Salary)
@Html.EditorFor(model => model.Salary) @Html.ValidationMessageFor(model => model.Salary)

}
@Html.ActionLink("Back to List", "Index")

Проверка на стороне сервера выглядит нормально, но как обрабатывать проверку на стороне клиента, чтобы отправлять POST при нажатии кнопки отправки.

Проверка JavaScript не обрабатывает запятую.enter image description hereenter image description here

14
задан Kman 3 April 2012 в 11:08
поделиться