MVC :: Nullable DateTime Give Invalid Modelstate If Null?
Mar 19, 2011
Got a nullable datetime member on my viewmodel.the moment it hit my controller action, the viewmodel's modelstate allready are invalid (because the member is null).Forgot...how that works? (using MVC2)Basically my viewmodel have a social security number, passport number and passport expiracy date.If the ssn is entered, I want to ignore the two passport related fields, so I made the expiracy date member nullable.
Like all other viewmodels in this app, each model have it's own validation function that will do validation, and in there I add an error that the date is required or not valid (if using passport number). mvc itself should not care about the date at all.I dont want to give the date a default value, because then the date will show when the form loads, and it must be an empty field (unless I already got a date of course.
I have used IValidateObject successfully using a strongly typed view using HTML Helpers. When I hand code a view, still using a strongly type view, but no HTML/AJAX helpers, e.g.
[Code]....
Note: I am also handcoding the ajax and validation js.
When I post back to the Controller, even though the model data is correct, the ModelState is always invalid, having delved into the ModelState and found the error, it is always on the Model property where the IValidateObject.Validate is used. If I stop implementing the IValidObject on my model it all works fine, but I lose my IValidObject.Validate validation rules. Is there something I can do about this, what determines and at what point does .NET check validity of the ModelState? Presumably I am missing something that needs to be set on the ModelState and is not happening as I am hand coding the views/js.
I'd like to disable ModelState validation messages and keep my data annotation error messages.
When I update model, message "The value '' is invalid." apears in ModelState. I know that I'm trying to assign null to not nullable property, but I have my own validation and message.
I use something like this
[Required(ErrorMessage="Blahblah some error")]
I want user to see my message "Blahblah some error", but not stupid message: The value '' is invalid.
I've been working with MVC 2 for awhile and ive done ReturnToAction as well as ValidationSummary - but this is a little different in that my "submit" buttons are controls by javascript/JQuery - i debug the action and it does go into the correct Controller Action but once it passes over RedirecToAction, nothing happens....
My second problem is that my ValidationSummary fails to show - i run a test and when it returns a View when ModelState is invalid - nothing shows up
Is it a problem with my buttons/forms/submit/JQuery?
[Code]....
And the Controller looks like this:
[Code]....
My Services handle things like validation, I pass it the ModelState and a ModelStateDictionary wrapper and add errors - am i adding errors incorrectly?
I am a c#/asp.net developer and I am having to work on a VB/asp.net. I started out with VB.NET but after years away from it I'm getting confused with the syntax.
I have two variables
Dim originalDate as DateTime? Dim newDate as DateTime?
Both nullable datetimes, originalDate is a nullable date I am getting from the database and newDate time is set in code, I need to compare them, they can either both have dates, neither have dates or one have and one not.
I have a bit of code as follows:
if origEndDate = origEndDate then
When both origEndDate and origEndDate are "nothing" this statement is false (well when I run it in the watch window it comes back as nothing)!
I don't understand why this is the case because I was under the impression doing an "=" compares the two values and as they are the same surely it should be true?
What syntax should I be using as in C# I can do the above as so:
After wading through quite a few articles on creating modal forms (using partial views and jquery) I got things working fine for my login....as long as you enter a valid login though!
What I did:
Created a partial view containing my login form.
In my action controller, the get action just return a PartialViewResult, which get dealt with by a bit of jQuery in my master:[Code]....
Like I said this works fine. Now the post action of my login check if it's a valid login, and if so send the user to the passed returnurl or the home page.
However, if the validation fails, I now return the partial view again, which work , but the partial get displayed by itself instead of rendering in the modal form that was opened by jquery.
I have a textbox that I use to gather a date. I would like to have the database store a null if this field is left blank by the user when submitting. I am using the following on my aspx page:
Every single parameter is bound just fine except toDate which turns out to be always null. When inspecting the Request.QueryString["toDate"] it retrives the right value which is 30/09/2010. It seems that DateTime expects another format when binding. What is the right format?
Is there a way to use the OrderBy command in Linq with a DateTime field using the Date portion only (without the Time Stamp portion) that is nullable such as in the following query?
var query1 = from myTable in MyTable where myTable.EnteredDate != null group myTable by myTable.EnteredDate into myOutput[code]....
Since myTable.EnteredDate is a DateTime field that can contain nulls, it does not support the .Date conversion call such as myTable.EnteredDate.Date
Is there a way to convert the myTable.EnteredDate field into a date only string in the group by portion?
I am having a problem with the Client Validation not firing when I have marked a nullable DateTime field as [Required] and the value of the field is null. (It is actually stopping ALL client validation on the page working - not just the DateTime field).
Interestingly enough, once a post back has been done and the error picked up on the server, the client validation starts working.
Also if you set the date to a none null value (see commented out line in the controller) it will also work
I have replicated this behaviour in a small test project (this is deliberately very Noddy - just enough to replicate the problem)
Am I doing something fundamentally wrong or am I looking at coding some sort of work around here? (I realise that a Required nullable field sounds like a bit of a oxymoron, but I wanted to present the user with a blank field which they must then fill, not one pre-populated with an arbitrary date value)
Am I going to be able to query (using LINQ to SQL) a database field with a type like the following "public System.Nullable<System.DateTime> Spouse_DOB"?
I'm trying to use the following code: [Code]....
and I get the error "'System.Nullable<System.DateTime>' does not contain a definition for 'Month' and no extension method 'Month' accepting a first argument of type 'System.Nullable<System.DateTime>' could be found (are you missing a using directive or an assembly reference?)"
Is it because this DateTime column allows a NULL value (since everyone isn't married in my database)?
Error 1 'System.Nullable<System.DateTime>' does not contain a definition for 'Month' and no extension method 'Month' accepting a first argument of type 'System.Nullable<System.DateTime>' could be found (are you missing a using directive or an assembly reference?) C:Working WebsitesGrannys Clan Address BookDefault.aspx.cs 38 26 C:Working WebsitesGrannys Clan Addres
I remember being told that you can add some syntax to the end of a statement that will do something if the field is null. Pretty vague, but I cant seem to find anything about it via google.
I definitely isnt how to set a field to be nullable. I know that.
Here is an example of what I want.
int? field1 = 0;
field1 = int.parse(string2); (where string2 is a passed value, that could be null)
I thought there was something you could put at ?? if it is a null, such as:
field1 = int.parse(string2) ??;
Or do I have to check every if every string2 is null before making that statement.
Can anyone reliably get the EDS to save a nullable column to the databse as a "null" when bound to any of the controls such as "FormView"?I have tried using several different UpdateParameters (Session, ControlParamater, Parameter, etc). I have tried setting "ConvertEmptyStringToNull" to true and leaving the property off entirely. Nothing works. On my "Inserts" it works fine.(I have made sure the column is set to nullable = true in the Entity Designer.....)
I have to change the username column in my database to nullable, which means everywhere in my code, I now have to check username.HasValue and change references to username to username.Value. Is there anything I can do to avoid having to change all the references to username to username.Value?
[System.Web.Script.Services.ScriptService] public class Quotes : System.Web.Services.WebService { ebMethod] public void Calculate(int param1, int? param2)
When i click on the page that represents a controller the following error was displayed:-
"The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type"
On this link of code
var articleapproval = articletyperepository.FindAllArticlesRequireMyApproval().ToList(); while the FindAllArticlesRequireMyApproval execute the following LINQ statement :- var articleapproval= articletyperepository.FindAllArticlesRequireMyApproval().ToList();
where this methods calls the following LINQ statement:-
I have setup my business object to have a create_date and edit_date members both datetime datatypes. My company want to display the create_date and edit_date fields in a gridview for each transaction. The problem i have is that after insterting a record it will have a valid create_date but no edit_date and when displayed in the gridview it defaults to datetime.minvalue (My default). How on earth do i show an empty field in my gridview for a null datetime field in the database?
I am using similar architecture to the Imar Spaanjaars example of a tiered solution. With a few small tweeks it has worked well for me for ages. I am passing a List<Database> to my object datasource which connects to my gridview.
I'm trying to bind a nullable bit column, which at the moment is mostly null, but I need to somehow convert the null to a 'false' on runtime because it doesn't bind to a checkbox if it's null. But, I am currently unable to change the default value and update all records accordingly - is there a way to do this in runtime?
I am making a website to store invoices so i can mail them to clients. So i got a table for clients, invoices and one with invoice products/services. When an invoice has no products/services added to them and it returns null i get the error "the null value cannot be assigned to a member with type System.Decimal which is a non-nullable value type."
I just started with linq. Before i always used mysql. Mostly i just had to call data from 1 table so forgive me if my linq query isn't really correct.
Dim invoices = From i In db.invoices _ Group Join p In db.products On i.id Equals p.invoiceId Into invoiceProducts = Group _ Select New With {i.client.naam, i.titel, (From iP In invoiceProducts Select iP.prijs).Sum}
i show the client's name, the title of the invoice and the total amount the clients will need to pay for products and services.