.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Win Surprise Gifts!!!

Top 5 Contributors of the Month
david stephan
Gaurav Pal
Post New Web Links

Defining Validation rules with Data annotations - ???

Posted By:      Posted Date: September 24, 2010    Points: 0   Category :ASP.Net

I am having following problem:

Defined RegisterModel class - with some validation rules for creating new users, and this works fine.

Then I get this class, strip few properties and wanted to reuse it as UserInfo_Form_Model,   for editing user properites.

No changes, just deleted few items, renamed and reused in strongly typed View for editing.

And result of validation is: -

[DisplayName("Name")] works fine, showing correct

[StringLength(20, ErrorMessage = "xxxx...")] - not working, no message showed when suppose to be one

[Required(ErrorMessage = "xxxx.")] - not working, not showing messages when delete required values?

but  (ModelState.IsValid) is false when I checked it in controller (it had to be because required value is missing)?

Is it this only partially correct and how this can be?

Well this is a bit frustrating because it cant be simpler than this and I cant make this simple code reuse. :|

Quite a few gotchas I already found or I am coding completely wrong.

View Complete Post

More Related Resource Links

Input Validation: Enforcing Complex Business Data Rules with WPF


Windows Presentation Foundation has a rich data binding system that includes flexible support for business data validation. We take a look at implementing some complex data input validation scenarios that include customized data errors for users.

Brian Noyes

MSDN Magazine June 2010

Which is the best approach for applying business rules and basic validation like data types?

Hi Everybody   Please suggest me the best approach for applying the business rules and data type validations .Here is my choices : 1)Sequential work flow 2)State machine work flow 3)Work flow rule engine 4)Rule engine without workflow Out of above choices ,which is the best approach? Please provide me the reasons or senarioes for which is the best approach for applying the business rules and also performancewise. My requirement is : After getting the reports ,need to apply the datatype validations like valid or invalid date ...etc to the reports .And stored into Database.In the next step,need to apply the business rules to that reports in such a way that data should be good quality. Thank you very much

Data Points: Data Validation with Silverlight 3 and the DataForm


In this month's column, John Papa shows you how the DataForm control works and how it can be customized.  He presents in detail a sample application that uses several features to bind, navigate, edit and validate data using the DataForm.

John Papa

MSDN Magazine October 2009

Web Services: Extend the ASP.NET WebMethod Framework with Business Rules Validation


In an earlier article the authors showed how to build a custom WebMethods extension that provides XML Schema validation, a function that is lacking in ASP.NET. In the process they established a foundation for enforcing business rules during the deserialization of XML data. The technique, which is described in this article, uses declarative XPath assertions to test business rule compliance.In building this business rules validation engine, the authors integrate the validation descriptions into the WSDL file that is automatically generated by the WebMethod infrastructure. Finally, they demonstrate how to extend wsdl.exe, the tool that generates WebMethod proxy/server code from WSDL files, to make use of their extensions.

Aaron Skonnard and Dan Sullivan

MSDN Magazine August 2003

Extracting Association Rules from Data Mining Model

Hi I have succesfully created a Data Mining Model using the Association Model. I have deployed and processed it. I need to extract all the rules that is generated by the model. I know that you normally query the model using DMX prediction queries, but in this case I need to extract the rules to a separate table for further processing. I have tried the following approaches unsuccessfully: 1. Linked server in MSSQL Management Studio. DMX query using OpenQuery. The DMX query looks like this: SELECT FLATTENED NODE_CAPTION, NODE_SUPPORT, NODE_PROBABILITY, MSOLAP_NODE_SCORE FROM DataMiningModel.CONTENT WHERE NODE_TYPE = 8   On small models this method works. On larger models with many rules I receive an exception: "XML for Analysis parser: The XML for Analysis request timed out" before it was completed This always happens after 70min. I might have missed a timeout option? 2. Using SSIS to run the same DMX query as above. The method is presented here: http://www.sqlservercentral.com/articles/MDX/64697/ This method works on small models. On larger models that did not work with method 1, it return rules. The number of rules returned is sometimes different for the same package run multiple times. For the largest models it simply returns 0 rules. I suspect that the same XML Parser error happens under the hood of SSIS. I'm currently stuck, and need some inp

Data validation for datetime parameter in SSRS

Hi,   I wanted to know more about validation of SSRS parameters. I have a simple report which has a parameter called startdate of DateTime datatype. The datetime parameter in SSRS takes manual input as well. So, the user can enter any junk value. I want to ensure that the input parameter is in correct format and I want to display an error msg when the format is incorrect. My report has the following VB code for validation:   Public Function Validate( ByVal startdate As String) As BooleanIf IsDate(startdate) = True Then Return TrueElse Return FalseEnd IfEnd Function   And my report has a textbox which has the expression property set to; =Code.Validate(Parameters!startdate.Value) the textbox on the report has to display if the entered date is valid or not.   But, when i enter an erroneous date, SSRS doesn't render the report and throws a generic error. This happens even before the code written for validating the parameter executes.   Also couldn't find a way to disable the manual input for the datetime parameter. Even that would solve the problem.   Another alternative was to make the startdate parameter as string, but i want the calendar control button to be provided for the user.

DataGrid ValidationRule or IDataErrorInfo validation code called multiple times for each data change

Following my enquiry regarding a problem in Datagrid validation, for which managing exceptions is apparently a problem, I tested the two other methods: using validation rules, or implementing the IDataErrorInfo interface. I ran into other problems there, more insidious this time. This has been done on Windows7 (32-bit), .NET 4.0.30319. 1) IDataErrorInfo When this interface is implemented, the this[string columnName] property is called four times for each modification: two times before the cell enters edit mode (with the old value in the corresponding property) two times when the new value has to be validated (with the new value) It strikes me as not really efficient, is there something wrong with my code? Here's the C# part: using System; using System.Windows; using System.Collections.ObjectModel; using System.ComponentModel; namespace DataGridTest2 { public partial class MainWindow : Window { ObservableCollection<User> users; public MainWindow() { InitializeComponent(); users = new ObservableCollection<User>() { new User { Name = "Teddy", Age = "2" }, new User { Name = "Avi", Age = "19" } }; datagrid.ItemsSource = users; datagrid.Focus(); } } public class User : INotifyPropertyChanged, IDataErrorInfo { string name; public string Name

Data Validation in a 3 tier application

Say you have a form  designed in  Silverlight(Front end)-Asp.NEt(business layer)-SQl(bakcend)Should data validation occur on all 3 layers or just the presentation layer or  a combination of the front end with the other 2  e.g. validating an email address? I'm trying to undestand as to why if data has been validated on the presentation  why further data validation would be necessary  especially if there would be large amounts of data being validated and this could potentially slow down database transactions? 

Help on Binding validation rules

Dear all, I have the follwoing code snipet: <TextBox Validation.ErrorTemplate="{StaticResource validationTemplate}" Style="{StaticResource textBoxInError}" Grid.Column="1" Grid.Row="3"> <TextBox.Text> <Binding Path="CurrentPlayer.Email" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged"> <Binding.ValidationRules> <vrules:EmptyStringValidationRules /> </Binding.ValidationRules> </Binding> <TextBox.Text> </TextBox> </Border> <Button Margin="1" Foreground="Black" FontSize="25" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Stretch" Command="{x:Static local:QuizzCommands.Start}" Content="{StaticResource Ok}" /> From teh sample above I have place only a single text box but in fact I have 4 text box which should not be empty before pressing the button So in an other hand the Button should not be enabled until all text box entrie are filled by user I have impleneted a validation rules which check if filed is empty as follow : class EmptyStringValidationRules:ValidationRule { public overri

A general validation attribute for checking uniqueness in a linq to sql data context

I've been programming asp.net for, oh, a couple of days now. Here's a question I can't even begin to figure out for myself. I hope it's obvious from the code what I want to accomplish, and I have, but it's not pretty. Furthermore I'd like to use it on whatever table, whatever field, i.e. check the uniqueness of a value against a table and field I specify, passing it all into the attribute constructor. public class UniqueEmailAttribute : ValidationAttribute{    public UniqueEmailAttribute()    {    }    public override Boolean IsValid(Object value)    {        //not pretty. todo: do away with this.        var db = new CoinDataContext();        int c = db.Emails.Count(e => e.Email1 == value.ToString());        return (Boolean) (c == 0);    }}

View data input validation

I got a view has a dropdownlist and a text box for user input.And the form is set to POST.So in order to validate the input of the text box for his age, ie integer, should I use [HTTPPost] above the action body?And use overload method?eg.- Action 1 to show the view useActionResult ShowView()- after the user press 'Submit' button on the view redirect to the action[HTTPPost]ActionResult ShowView(int age){}Just wonder to validate the age, what happen if the input is not integer? Should I redirect to ShowView()?

List data validation failed error checking in dockument and uploading to library.

If I upload a document to the "vanilla" Document Library at the root site (I have not created sub sites yet, we are in the testing phase), the document does get uploaded but the following error appears: Error List data validation failed.   Troubleshoot issues with Microsoft SharePoint Foundation. Correlation ID: 0928c39a-f2d7-4ce6-8057-62cc01c6a951 Date and Time: 6/16/2010 5:27:58 PM Go back to site -------------------------------------------------------------------------- The doc has uploaded but is automatically checked out to me I am logged on as the ADMINISTRATOR Account Now if I try and discard the check out, it will fail as there is no original checked in version. If I try and click Check in, then the same error appears Help

Data Annotation not triggering the client side validation when used on an overriden model property

Hi all, This is a saga from a post that was recently answered:http://forums.asp.net/t/1598187.aspxMy main problem is the lack of client side validation when we use a child model class, the server side validation works like a charm whether you use the virtual/override solution or the new attribute on the child class with the getter and setter linking the property to the base class's one.The client side validation does not work with none of the solutions presented below.This is a sample code of the first solution: [Serializable] public class DateViewModel { ... [Display(typeof(App_GlobalResources.Messages), "Date_Year")] public virtual int? Year { get; set; } ... } [Serializable] public class BirthDateViewModel : DateViewModel { ... [Display(typeof(App_GlobalResources.Messages), "Date_Year")] [YearRange(ErrorMessageResourceType = typeof(App_GlobalResources.Messages), ErrorMessageResourceName = "Validation_Range")] public override int? Year { get; set; } ... } This is a code sample of the second solution : [Serializable] public class DateViewModel { ... [Display(typeof(App_GlobalResources.Messages), "Date_Year")] public int? Year { get; set; } ... } [Serializable] public class BirthDateViewModel : DateViewMod

SSIS User Defined Data Type (Alias Data Types) and OLE DB Command validation

Hello everyone, I've been having an issue with trying to run my SSIS package on a server, and it seems to be failing on the OLE DB Command step.  What we have in our SQL 2005 DB, is a User-Defined Data Type (base type char(7)) and the OLE DB Command is supposed to call a proc that passes in a value of this data type. ie:  CREATE PROCEDURE myProcedure ( @passedInFromSSIS MY_DATATYPE ) AS .... In my SSIS package, I have the type defined as DT_STR with a length of 7.  Now, when I run the package locally (via Visual Studio), the process runs with success.  However, once the package is deployed on a server and run from an application (note: it is run under a different user), the process fails on a validation step with a "Invalid Parameter Number" error. Now, if I change the input parameter in my proc to the base type of the user-defined data type, the process works again. Has anybody run into a similar issue or know what may be causing this issue?  I first suspected perhaps I needed to grant permissions on the user-defined data type (since I was able to run it under my security context, but not under the application's), however noticed that there isn't security tied to the types.  Any other thoughts?  Please let me know if you need further explanation.  Thanks!

Appointment validation checking and data inserting

I am beginner of asp.net and c#Currently i doing appointment website and need suggestions/ ideas. I have create a simple web form  with Calender Control as picture below enable users to select date and time. At the calender control, i have set that users can only select tuesday and thursday every month using DayRender. After that i put a DropDownList to display the time. Next step, i want to store the data into database, for example UserA make appointment on Date 21 September 2010, Time 1100 and make it unavailable for other bookings. When UserB makes appointment on same Date and Time, it will display information that the slot is booked/unavailable. To implement this, what approach should i take? When i insert the data into database should i convert the value of DropDownList to time format or just insert DropDownList.Text? If i just insert according to DropDownList.Text will it having problem in check the slot is booked or not? <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>0900</asp:ListItem> <asp:ListItem>1000</asp:ListItem> <asp:ListItem>1100</asp:ListItem> <asp:ListItem>1200</asp:ListItem> <asp:ListItem>1400</asp:ListItem> <asp:ListItem>1500</asp:ListItem> <asp:ListItem>1600</asp:L

Collect data from a User - Validation Bug




I use the action "Collect data from a User". I add a new field of the type Choice, the next step I write two choices:




and configure it:


Default value is blank
  Display as: Radio Buttons
  uncheck Allow Fill-in choices
  uncheck Allow blank values


Click Finich button


When the task is created I need to choose among Approved or Rejected, however if it be not chosen any alternative the validation doesn't work.


If I have a field text the validation works perfectly.


Is there a bug in validation form when the field is a "Choice type" ?


Please help-me.

Problems with multiple validation rules



I've added some custom validation rules programatically like this:



            BindingOperations.GetBinding(txtTitulo, TextBox.TextProperty).ValidationRules.Clear();

            BindingOperations.GetBinding(txtTitulo, TextBox.TextProperty).ValidationRules.Add(new ReglaDatoRequerido(Idioma.RecursoIdiomaLocal(this, "msjErrorDatoRequerido")));

            BindingOperations.GetBinding(txtTitulo, TextBox.TextProperty).ValidationRules.Add(new ReglaRangoDatos(Idioma.RecursoIdiomaLocal(this, "msjErrorDatoRequerido"), 1, 5, false));

these are the rules:
public abstract class ReglaValidacionBase : ValidationRule
        /// <summary>
        /// Mensaje de error.
        /// </summary>
        public string MensajeError { get; set; }

   public class ReglaDatoRequerido : ReglaValidacionBase
        public ReglaDatoRequerido(st
ASP.NetWindows Application  .NET Framework  C#  VB.Net  ADO.Net  
Sql Server  SharePoint  Silverlight  Others  All   

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend