asp.net-mvc-3 – 是否可以强制使用DataType作为DataType.Murrency的MVC3字段的货
发布时间:2020-05-30 08:52:01 所属栏目:asp.Net 来源:互联网
导读:我正在编写一个MVC3应用程序,它从数据库中读取大量货币数据.我的问题是这些金额都是不同的货币. 如果我设置这样的字段类型: [DataType(DataType.Currency)]public Amount{ get; set;} 我得到小数位和货币符号,看起来不错,但它默认为用户的本地货币.美国用户
|
我正在编写一个MVC3应用程序,它从数据库中读取大量货币数据.我的问题是这些金额都是不同的货币. 如果我设置这样的字段类型: [DataType(DataType.Currency)]
public Amount{ get; set;}
我得到小数位和货币符号,看起来不错,但它默认为用户的本地货币.美国用户看到423.29美元,而GB用户看到423.29英镑.我可以使用< globalization culture =“{something}”>覆盖货币.在Web.config中,但这会全局设置所有货币字段. 标记字段的最简单方法是什么,以便使用正确的小数位和货币符号进行渲染? 在一个理想的世界里,我希望能够做到这样的事情(美元): [DataType(DataType.Currency,culture="en-us")]
public Amount{ get; set; }
并且总是呈现为$439.38,但内置注释无法实现. 解决方法我这样做的方法是创建一个自定义属性,扩展DataType属性和自定义html帮助器.它不一定是最简单的方法,但它可以节省未来的时间.编辑 自定义属性 public class CurrencyDisplayAttribute : DataTypeAttribute
{
public string Culture { get; set; }
public CurrencyDisplayAttribute(string culture)
: base(DataType.Currency)
{
Culture = culture;
}
}
Html助手 public static class Helpers
{
public static IHtmlString CurrencyDisplayFor<TModel,TProperty>(this HtmlHelper<TModel> helper,Expression<Func<TModel,TProperty>> expression)
{
double value = double.Parse(expression.Compile().Invoke(helper.ViewData.Model).ToString());
var metadata = ModelMetadata.FromLambdaExpression(expression,helper.ViewData);
var prop = typeof (TModel).GetProperty(metadata.PropertyName);
var attribute = prop.GetCustomAttribute(typeof (CurrencyDisplayAttribute)) as CurrencyDisplayAttribute;
// this should be whatever html element you want to create
TagBuilder tagBuilder = new TagBuilder("span");
tagBuilder.SetInnerText(value.ToString("c",CultureInfo.CreateSpecificCulture(attribute.Culture));
return MvcHtmlString.Create(tagBuilder.ToString());
}
}
您可以在模型中使用该属性 [CurrencyDisplay("en-us")]
public double Amount { get; set; }
然后在您的视图中,您可以使用帮助程序 @Html.CurrencyDisplayFor(x => x.Amount); 只要您的模型正确传递. 显然,你需要做错误检查等等. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC 2应用程序中的区域可以映射到子域吗?
- asp.net-mvc – MVC3将@model传递给局部视图
- asp.net-mvc-4 – LinkedIn在MVC4中使用DotNetOpenAuth的完
- 在asp.net mvc中生成javascript文件
- asp.net – 缓存viewstate?
- 两个单选按钮ASP.NET C#
- 用Dataset对象读取XML内容来绑定下拉列表框
- ASP.NET MVC的OnResultExecuted方法中的ActionResult的filt
- 在asp.net中RequiredFieldValidator Text和ErrorMessage有什
- asp.net-mvc – 将默认日期格式应用于ASP.NET MVC 3应用程序
推荐文章
站长推荐
- asp.net – 生产网络服务器上的间歇性高CPU(100%
- asp.net mvc partialview @ Ajax.ActionLink不起
- 如何为ASP.NET WebAPI 2中使用路由属性的特定控制
- asp.net – 从Owin WebApi2返回描述性401消息
- asp.net – 如何在MVC 3中设置图表系列颜色?
- asp.net – 发布期间自定义app_offline.htm文件
- asp.net – 用户角色 – 为什么不存储在会话中?
- ASP.NET – meta:ResourceKey vs %$Resources:
- asp.net-mvc-3 – MVC3 Html.BeginForm – 在Rou
- asp.net-mvc – 无法通过kendo上传从一个视图到另
热点阅读
