asp.net-mvc – 在Asp.Net MVC中使用千位分隔符的十进制值
| 
                         我有一个自定义模态类,其中包含一个小数成员和一个视图来接受此类的条目.一切运行良好,直到我添加了 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; }
    }
} 
 在我打了这个电话之后,我现在回头看看,我甚至犹豫要发贴,真是太丑了!但如果你认为这可能是有帮助的,我会让你决定… 祝你好运!-麦克风 (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
- 发布一款层次下拉列表控件
 - asp.net-mvc – ASP.NET MVC现在是“开源”.这是一件好事吗
 - 在ASP.NET中拒绝用户时,’CustomIdentity’上的Serializati
 - 使用asp.net控件创建无序列表?
 - asp.net-web-api – Web Api:找不到System.Net.Http版本2.
 - 你如何获得asp.net控件的自动生成的name属性?
 - Phonegap上的ASP.NET窗体身份验证问题(Android)
 - ASP.NET(C#)应用程序配置文件app.config/web.config的增、删
 - asp.net – 如何在MVC 3中设置图表系列颜色?
 - 一个简答的Access下的分页asp.net代码
 
- asp.net+ajaxfileupload.js 实现文件异步上传代码
 - asp.net – 使用FormsAuthentication持久的cooki
 - asp.net – 在MVC3或IIS 7.5中禁用x-frame-optio
 - asp.net-mvc-3 – MVC3非顺序索引和DefaultModel
 - .net核心中的ServicePointManager.DefaultConnec
 - asp.net – 增加IIS7 / Win7 Pro上的最大上传文件
 - asp.net-mvc – 如何将ASP.Net MVC路径段中的1或
 - asp.net-mvc-4 – MVC 4 DropDownListFor错误 –
 - asp.net-web-api – 从ASP.NET Web API ASP.NET
 - asp.net – “’Microsoft.Jet.OLEDB.4.0’提供程
 
