- Posted On 3 October 2014
- By
- In Programming
This post contains simple information about how you can override or change default error message “The value {0} is not valid for {1}” in MVC.
In my last project I wanted to change default error message “The value {0} is not valid for {1}” for decimal field quantity to “Invalid Quantity”.
When I google for it I found a solution by which I can achieve it on project level by defining them in a Resource file and then changing “ResourceClassKey” of ClientDataTypeModelValidatorProviderin Global.asax file. I was expecting a one line solution but this was little complex just to achieve simple message change and as our TL was so coward that I knew he will definitely going to reject this solution (happened same :-) ).
Anyways, so I achieved this by overriding this message in controller by manipulating ModelState and that solution got accepted as we wanted this change at two places only. So here I am sharing the same if you too want a quick workaround. This may not be a proper way but to close the bug it has saved my time.
When you define model class like below.
public class ProductViewModel { [Required(ErrorMessage="Required field.")] public string Name { get; set; } [Required(ErrorMessage = "Required field.")] public decimal Quantity { get; set; } }
Error message gets generated in following way when you enter text in decimal type of field.
To change the above message I manipulated ModelState like following in controller when form gets posted.
if (!this.ModelState.IsValid) { if (this.ModelState["Quantity"].Errors.Count == 1 && this.ModelState["Quantity"].Errors[0].ErrorMessage.Contains("is not valid for Quantity")) { this.ModelState["Quantity"].Errors.Clear(); this.ModelState["Quantity"].Errors.Add("Invalid Quantity."); } return View(model); }
And that’s it now when you enter text for decimal field following message gets generated.
You can achieve this hack in jQuery too by looping on data attribute. Another workaround is simply make this textbox as numeric textbox by handling it’s key events in jQuery.
Hope this simple post has benefited you. If you know any other way to achieve the same please do share it in comment section below. Thanks.
Top 10 Visual Studio things which can boost developers coding speed
Visual Studio 2012 provides some coding features by which you can code faster if use them properly. This post will cover top 10 things among them to boost your development speed.
Visual Studio 2008 Shell and TFS integration
Visual Studio 2008 Shell and TFS integration is the problem for all newbies of BIDS and TFS. Here is the solution.
Assembla - Free and private repository to manage your source code online with SVN subversion hosting
With Assembla you can share source code with others online. Free & Private source code repository with SVN Subversion, Git & Perforce Hosting.
How to call click or any event only once in jQuery
Know how to execute an click event or any event only once for any element in jQuery. Perform action only once and even not required to unbind event.
How to select all checkboxes as per range of numbers in jQuery MVC
JQuery code to select all checkboxes as per range provided with select all and deselect all functionality which can be embedded in ASP.NET MVC too. With validations such as invalid range.