asp.net-mvc-4 – 如何防止复杂类型的默认绑定器?
发布时间:2020-08-04 04:29:13 所属栏目:asp.Net 来源:互联网
导读:我有自定义类型Money的模型绑定器.绑定器工作正常,但内置的绑定/验证正在进行,并将数据标记为无效. 我的活页夹看起来像这样: public class MoneyModelBinder : DefaultModelBinder { protected override void OnModelUpdated(ControllerContext controllerCo
我有自定义类型Money的模型绑定器.绑定器工作正常,但内置的绑定/验证正在进行,并将数据标记为无效. 我的活页夹看起来像这样: public class MoneyModelBinder : DefaultModelBinder { protected override void OnModelUpdated(ControllerContext controllerContext,ModelBindingContext bindingContext) { var money = (Money)bindingContext.Model; var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Amount").AttemptedValue; var currencyCode = bindingContext.ValueProvider.GetValue(bindingContext.ModelName + ".Iso3LetterCode").AttemptedValue; Money parsedValue; if (String.IsNullOrEmpty(value)) { money.Amount = null; return; } var currency = Currency.FromIso3LetterCode(currencyCode); if(!Money.TryParse(value,currency,out parsedValue)) { bindingContext.ModelState.AddModelError("Amount",string.Format("Unable to parse {0} as money",value)); } else { money.Amount = parsedValue.Amount; money.Currency = parsedValue.Currency; } } } 当用户在文本框中键入类似“45,000”的值时,我的绑定器会正确地获取值,解析它并将其设置到模型中. 我遇到的问题是,默认验证然后启动状态值’45,000’对于Amount无效,因为它是十进制类型有意义,但我已经绑定了数据.如何防止我已经处理过的默认绑定器绑定数据? 我不确定这是否有任何区别,但我正在使用Html.EditorFor和编辑器,如下所示: @model Money <div class="input-prepend"> <span class="add-on">@Model.Currency.Symbol</span> @Html.TextBoxFor(m => m.Amount,new{ placeholder=string.Format("{0}",Model.Currency),@class="input-mini",Value=String.Format("{0:n0}",Model.Amount) }) @Html.HiddenFor(x => x.Iso3LetterCode) </div> 解决方法您只需将Amount属性标记为只读:[ReadOnly(true)] public decimal? Amount { get; set; } (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-2 – 使用’class(或其他保留关键字)作为匿名类
- ASP.NET中XML转JSON的方法实例
- ASP.NET MVC删除操作方法中的查询字符串
- asp.net – System.Security.SecurityException?
- asp.net – 查询字符串参数使我的应用程序面临风险?
- asp.net-mvc – 用于测试目的的假开放ID提供程序
- asp.net – 为什么Global.asax事件在我的ASP.NET网站没有触
- dependency-injection – 从ILogger访问当前的HttpContext
- RSS2.0中文规范详解及示例
- asp.net-mvc – MVC4部分视图没有将值加载到“容器”模型中
推荐文章
站长推荐
- asp.net – NHibernate – ManagedWebSessionCon
- asp.net+Ajax 文本文件静态分页实现代码
- entity-framework-4 – 当超出范围时,Ninject不调
- asp.net – 如何打破VB.NET中的“if”块
- asp.net-mvc – 在MVC4中绑定的正确方法
- asp.net-mvc – 如何在asp.net mvc3项目中开始使
- 使用ASP.NET Identity 2.0和MVC 5进行自定义单点
- 发布一款层次下拉列表控件
- 在ASP.Net网站上使用WCF服务的教程?
- asp.net-mvc – ASP.NET MVC – RequireJS最佳的
热点阅读