大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 在Asp.Net MVC中使用千位分隔符的十进制值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题是,我的模态类中的小数值不会与千分隔符绑定/解析.当我用“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时,工资值变为空值.有什么建议吗
Asp.Net MVC团队成员来到stackoverflow?我可以从你那里得到一点帮助吗?
亚历山大建议的自定义模型绑定器的更新代码
型号粘合剂
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 }
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; } } }
在我打了这个电话之后,我现在回头看看,我甚至犹豫要发贴,真是太丑了!但如果你认为这可能是有帮助的,我会让你决定…
祝你好运!-麦克风
以上是大佬教程为你收集整理的asp.net-mvc – 在Asp.Net MVC中使用千位分隔符的十进制值全部内容,希望文章能够帮你解决asp.net-mvc – 在Asp.Net MVC中使用千位分隔符的十进制值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。