asp.net-mvc-3 – MVC 3客户端验证,模型绑定十进制值和文化(不同的小数分隔符)
|
我试图让我的客户端验证(模型绑定)来支持不同的文化,我发现一个有趣的博客,我正在尝试实现这个主题. http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx 波科 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: <compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers,Version=1.0.0.0,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc,Version=3.0.0.0,PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages,PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
Global.asax被改变为使用我的自定义ModelBinder十进制和十进制?值 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";
}
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Jogador</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Salary)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Salary)
@Html.ValidationMessageFor(model => model.Salary)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List","Index")
</div>
服务器端验证似乎很好,但是如何处理客户端验证,以便在点击提交按钮时发送POST. JavaScript验证不处理逗号. 解决方法最后,通过了解Custom DecimalModelBinder只处理服务器端验证,并且不影响处理客户端验证的jquery.validate.js,我找到了一个解决问题的方法.扩展验证解决了我的问题. 通过新的.js文件扩展验证,作为解决方法的问题: $.validator.methods.number = function(value,element) {
return this.optional(element) || /^-?(?:d+|d{1,3}(?:[s.,]d{3})+)(?:[.,]d+)?$/ .test(value);
};
这个博客真的很有帮助 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- BreezeJS vs JayData for ASP开发ASP.NET MVC
- Asp.net mvc – Html提交按钮未发送帖子?
- 配置 – ASP.NET Web Api:项目需要SQL Server Express
- asp.net-mvc – 子文件夹中的控制器
- asp.net – 动态控件和回发
- asp.net – html脚本标签不使用类型javascript?
- asp.net – 是否有支持请求参数连接的URL构建器?
- asp.net – 什么是asp:DropDownList客户端事件?
- asp.net-mvc – 如何在MVC 4 API中打印JSON脚本
- asp.net – compilation debug =“true”和发布模式“relea
- ASP.Net – 在没有Windows用户的情况下使用基本身
- ASP.NET – 可以从服务器代码触发回发吗?
- ASP.NET 程序中删除文件夹导致session失效问题的
- 如何使用Castle Windsor与ASP.Net Web表单?
- asp.net-mvc – MVC4 RC WebApi参数绑定
- 什么是ASP.NET WebForms相当于ASP.NET MVC的View
- asp.net后台cs中的JSON格式变量在前台Js中调用方
- asp.net – 登录后对Membership.GetAllUsers()的
- asp.net-mvc – 从ASP.NET在Office Web Apps中打
- asp.net类序列化生成xml文件实例详解
