asp.net-mvc-4 – 如何防止复杂类型的默认绑定器?
发布时间:2020-08-04 10:48:32 所属栏目: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 – 如何正确识别vs2008版本级别?
- asp.net – 在IHTTPHandler中以编程方式创建System.Web.UI.
- asp.net core标签助手的高级用法TagHelper+Form
- asp.net jquery+ajax异步刷新实现示例
- asp.net-mvc – 当Bundling EnableOptimizations为true时,F
- asp.net – 干净的方式来防止输入按钮提交表单
- 在asp.net App_Code目录中使用Nemerle
- 在ASP.NET MVC中动态地从数据库生成CSS文件
- ASP.NET网址MAX_PATH限制
推荐文章
站长推荐
- asp.net-mvc – 从Api控制器内生成绝对的url to
- asp.net Web.config 详细配置说明
- asp.net – 有谁知道如何摆脱我的.net网络服务的
- .net – ReportViewer 2010无法评估表达式
- asp.net-mvc – 在ASP.NET MVC中添加服务引用4
- asp.net – Azure上的联合身份验证
- asp.net – 在剃刀中等同于End / Response.End?
- asp.net – 增加IIS7 / Win7 Pro上的最大上传文件
- WPF中ComboBox绑定数据库自动读取产生数据
- asp.net-mvc-4 – MVC 4 DropDownListFor错误 –
热点阅读
