asp.net-mvc – 在Asp.Net MVC中使用千位分隔符的十进制值
发布时间:2021-01-12 04:11:08 所属栏目:asp.Net 来源:互联网
导读:我有一个自定义模态类,其中包含一个小数成员和一个视图来接受此类的条目.一切运行良好,直到我添加了 javascripts来格式化输入控件内的数字.格式代码格式化输入的数字与千分隔符’,’当焦点模糊. 问题是,我的模态类中的小数值不会与千分隔符绑定/解析.当我用“
我有一个自定义模态类,其中包含一个小数成员和一个视图来接受此类的条目.一切运行良好,直到我添加了 javascripts来格式化输入控件内的数字.格式代码格式化输入的数字与千分隔符’,’当焦点模糊. 问题是,我的模态类中的小数值不会与千分隔符绑定/解析.当我用“1,000.00”测试时,ModelState.IsValid返回false,但是对于“100.00”是无效的. 如果您有任何解决方案,可以与我分享吗? 提前致谢. 样本类 public class Employee { public string Name { get; set; } public decimal Salary { get; set; } } 样品控制器 public class EmployeeController : Controller { [AcceptVerbs(HttpVerbs.Get)] public ActionResult New() { return View(); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult New(Employee e) { if (ModelState.IsValid) // <-- It is retruning false for values with ',' { //Subsequence codes if entry is valid. // } return View(e); } } 样品视图 <% using (Html.BeginForm()) { %> Name: <%= Html.TextBox("Name")%><br /> Salary: <%= Html.TextBox("Salary")%><br /> <button type="submit">Save</button> <% } %> 我试过一个解决方法与自定义ModelBinder亚历山大建议.问题解决了.但是,IDataErrorInfo实现的解决方案并不顺利.由于验证,输入0时,工资值变为空值.有什么建议吗 亚历山大建议的自定义模型绑定器的更新代码 型号粘合剂 public class MyModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { if (bindingContext == null) { throw new ArgumentNullException("bindingContext"); } ValueProviderResult valueResult; bindingContext.ValueProvider.TryGetValue(bindingContext.ModelName,out valueResult); if (valueResult != null) { if (bindingContext.ModelType == typeof(decimal)) { decimal decimalAttempt; decimalAttempt = Convert.ToDecimal(valueResult.AttemptedValue); return decimalAttempt; } } return null; } } 员工班 public class Employee : IDataErrorInfo { public string Name { get; set; } public decimal Salary { get; set; } #region IDataErrorInfo Members public string this[string columnName] { get { switch (columnName) { case "Salary": if (Salary <= 0) return "Invalid salary amount."; break; } return string.Empty; } } public string Error{ get { return string.Empty; } } #endregion } 解决方法似乎总是有某种形式的解决方法被找到,以使默认模型绑定器快乐!我想知道您是否可以创建一个仅由模型绑定器使用的“伪”属性? (注意,这绝对不是优雅的,我自己,似乎越来越多地采取类似的技巧,因为他们工作,他们得到工作“完成”…)还要注意,如果你使用一个单独的“ViewModel”(我建议这样做),你可以把这段代码放在那里,让你的域模型很好,干净.public class Employee { private decimal _Salary; public string MvcSalary // yes,a string. Bind your form values to this! { get { return _Salary.ToString(); } set { // (Using some pseudo-code here in this pseudo-property!) if (AppearsToBeValidDecimal(value)) { _Salary = StripCommas(value); } } } public decimal Salary { get { return _Salary; } set { _Salary = value; } } } 在我打了这个电话之后,我现在回头看看,我甚至犹豫要发贴,真是太丑了!但如果你认为这可能是有帮助的,我会让你决定… 祝你好运!-麦克风 (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 从asp.net mvc生成PDF文件
- asp.net读取excel文件的三种方法示例
- asp.net(C#)禁止缓存文件不让文件缓存到客户端
- asp.net-mvc-3 – 如何避免使用MVC3 FileContentResult重复
- asp.net-mvc – Bug? ASP.NET MVC 2中的客户端验证导致Val
- asp.net-mvc – 我如何moq aingleingleResult?我是不是该?
- entity-framework – 如果EF 5,如何定义自定义命名约定
- asp.net – ASP.NET中的“关键字不支持:”错误
- asp.net mvc webapi 实用的接口加密方法示例
- asp.net 汉字转换拼音及首字母实现代码
推荐文章
站长推荐
- 如何在不使用MembershipProvider的情况下使用ASP
- asp.net-mvc-3 – 为什么@ Html.Label()删除一些
- asp.net-mvc-3 – 如何避免使用MVC3 FileContent
- 有标签的ASP.NET WebControl吗?
- asp.net-mvc – 在ASP.NET MVC中实现工作单元的方
- asp.net – 应用程序池循环如何影响ASP Net会话状
- asp.net-mvc – asp.net MVC应该是View-Model封装
- ASP.NET – 可以从服务器代码触发回发吗?
- asp.net-mvc – 已经使用相同的参数类型定义了一
- Asp.net core WebApi 使用Swagger生成帮助页实例
热点阅读