English 中文(简体)
“ 值 {0} 值无效” 的本地化
原标题:Localization for "the value {0} is invalid" in case of int overflow

我读过“https://stackoverflow.com/a/5395297/291695> 回答 有关验证错误本地化的答案,具体方法是指定 DefaultModelBinder.ResourcClassKey ,基本上是指输入 int 字段的字符串值或日期字段的日期时间。

但当我打字“111111111111111111111111111111111111111111111111111”时,我就会得到System.Overflowexeption ,它看起来像,“值{0}无效。”

是否有办法(将电文翻译成其他语文)将验证错误与监查委的其他验证类似的方式本地化?

最佳回答

我也有同样的问题,我终于找到了解决办法。 是的,这个信息可以被本地化, 幸运的是,当你找到它的时候,它很容易。

您必须创建一个资源文件, 并将其放入 < code> App_ GlobalResources 文件夹。 您可以任意调用文件, 但我通常称之为 MvcvalidationMessages 。

打开资源文件,创建名为 InvalidPropertyValue 的字符串,并在数值字段中写入任何您想要的信息。

现在打开 Global.asax 文件, 并在方法 < code> Application_ Start () 上添加以下行:

System.Web.Mvc.Html.ValidationExtensions.ResourceClassKey = "MvcValidationMessages";  

“ MvcvalidationMessages” 当然应该是您刚刚创建的资源文件的正确名称 。

和Voíla! 所有的信息都在这里。 显示的信息现在将是你自己的, 而不是默认的 。

问题回答

我最终压倒了 int 的模型Binder, 并提供了本地错误信息 :

public class IntModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        double parsedValue;
        if (double.TryParse(value.AttemptedValue, out parsedValue))
        {
            if ((parsedValue < int.MinValue || parsedValue > int.MaxValue))
            {
                var error = "LOCALIZED ERROR MESSAGE FOR FIELD  {0}  HERE!!!";
                bindingContext.ModelState.AddModelError(bindingContext.ModelName, string.Format(error, value.AttemptedValue, bindingContext.ModelMetadata.DisplayName));
            }
        }
        return base.BindModel(controllerContext, bindingContext);
    }
}

然后我简单注册了它:ModelBinders.Binders.Add(类型( int), 新的 IntModelBinder () ;, 现在它运作良好 。

P. S. 当然,我的局部误差信息 在模型集中没有硬编码, 这只是一个简化的例子:)





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签