MVC :: DateTime Validation Exceptions Not Caught?
Jul 6, 2010[Code]....
When doing some custom validation on DateTime fields the thrown exceptions are not caught and simply cause the application to end.
[Code]....
When doing some custom validation on DateTime fields the thrown exceptions are not caught and simply cause the application to end.
I have basic client-side validation working in my MVC3 RC2 application, but I'm now interested in recommended practices for conveying server side validation errors, as well as server side exceptions, to the client. I know I can add properties to my view model and display these if populated, but I don't want to reinvent the wheel, and I would like to tie in with MVC's way of doing things. So, how should I, a) notify the user of server side validation errors, and, b) notify the user of server side exceptions, e.g.
View 1 RepliesI know there are a few posts on this issue already, however I haven't found the answers I was really looking for.
My situation is like this: I have a DLL project containing my business logic. Then I have a web application that refers to this DLL, and calls a function from it. And I have a global.asax which handles errors on Application_Error
Sample:
// MyWebsite.aspx.cs
using MyBusinessLogic;
protected void Page_Load(object sender, EventArgs e)
{
MyBusinessLogicClass.DoSomething();
}
// global.asax.cs
protected void Application_Error(object sender, EventArgs e)
[Code].....
I have a page here with a few list views on it that are all bound to Linq data sources and they seem to be working just fine.I want to add validation such that when a checkbox (IsVoid on the object) is checked, comments must be entered (VoidedComments on the object).
Here's the bound object's OnValidate method:
partial void OnValidate(ChangeAction action)
{
if (action == ChangeAction.Update) [code]....
Despite there being a dynamic validator on the page referencing the same ValidationGroup as the dynamic control, when the exception fires, it's caught in JavaScript and the debugger wants to break in. The message is never delivered to the UI as expected.
I'm building the standard 3-tier ASP.NET web application but I'm struggling as to where to do certain things - specifically handling exceptions.
I've tried to have a look around on the web for some examples but can't find any which go as far as a whole project showing how everything links together.
In my data-tier I'm connecting to SQL Server and doing some stuff. I know I need to catch exceptions that could be raised as a result but I'm not sure where to do it.
From what I've read I should be doing it in the UI tier but in that case I'm not sure how to ensure that the connection to the database is closed. Is anyone able to clarify how to do this? Also if anyone knows as to where I could find an example 3-tier web application that follows best practices that would be great too.
We have a asp.net application and want to implement logging. The first idea was to use the Application_Error method in the global.asax file.
The problem is that ASP.NET very often seem to throw exceptions internally that are not caused by the application and which seem not to interfer with the users normal workflow. For example we often get HTTPExceptions, UnauthorizedAccessExceptions and others caught in this method, although there is no real error in the application.
Group Validation of Two DateTime Picker Using Javascript in asp.net
View 1 RepliesI'm using MVC 2 with some Models from a LinqToSql project that I built. I see that when I post back to a Controller Action after editing a form that has a DateTime field from the Model, the MVC Html.ValidationMessageFor() helper will nicely display an error beside the Date text box. This seems to happen automatically when the you test ModelState.IsValid() in the Controller Action, as if the MVC model binding automatically knows that the DateTime field cannot be empty.
My question is... I have some other string fields in these LinqToSql generated classes that are Not-Nullable (marked as Not Nullable in Sql Server which passes thourgh to the LinqToSql generated classes), so why doesn't Mr. MVC pick up on those as well and display a "Required" message in the ValidationMessageFor() placeholders I have added for those fields?
Sure, I have successfully added the MetadataType(typeof<t>) buddy classes to cover these Non-nullable string fields, but it sure does seem redundant to add all this metadata in buddy classes when the LinqToSql generated classes already contain enough info that MVC could sniff out. It MVC validation works with DateTime automatically, why not these Not-nullable fields too?
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)
Model
[Code]....
View (Auto generated)
[Code]....
[Code]....
My question is, I have a PL, BL and DAL layered architecture (In which all these components are hosted in a single web server).
With the above architecture, i have only placed try catch block in all my events in aspx.cs pages in PL ALONE and NO TRY CATCH BLOCK IN BL AND DAL.
There is one command timeout exception happening at the DAL layer and the exception bubbles back to the PL(aspx page event which is having the try catch block). This try catch block catches the exeption and logs the exception information to database and displays useful information in the UI.
WIth the above approach, sometime very rarely(only once till now) exception is not caught in the PL for the commandtimeout exception thrown from DAL implicitly.I confirmed the exception is not caught because the exception information is not logged into the database and also no useful information displayed in UI.
Why the exception from DAL dint bubble down to PL? Do we need to explicitly throw exception from DAL or BL i.e by having try catch block in BL and DAL ?
I have tried this on two different controller methods now, and both times, even if the linq2sql doesn't allow the data to be saved, the code never jumps into the catch block.
I've watched the noun object in the middle of the trace, and the isvalid property is false, but the modelstate isvalid is true. Either way, the code never jumps into the catch block.I'm pulling my hair out about this. I feel like it will be something really silly.
The code all works similar to nerd dinner.
NounRepository nounRepository = new NounRepository();
Noun noun = new Noun();
try[code]...
I'd rather not have to add code in this manner though, as it seems like an unnecessary duplication.
I have the following definition in my web.config
[Code]....
But when I get a 401.2 it still gives me the ugly Access Denied Screen instead of my redirect page. The files are in the root with no security on them.
I have (pretty much) the following code in my protected void Application_Error(object sender, EventArgs e) method in Global.asax....
Exception ex = Server.GetLastError();
if (ex is
System.Security.SecurityException)
Response.Redirect("Logon.aspx");
else
Response.Redirect("ErrorPage.aspx");
If I navigate to a page before I log on the exception is caught and I am redirected to Login.aspx as I would expect. However, this is only working when debugging using VS on my local machine.When uploaded to the live environment, the exception is not caught and the user is presented with "Security Exception - Request for principal permission failed."
I'm sending emails inviting contacts to login to setup an account on a customers website. I'm using SMTP from web methods in code behind... These emails have clickable links that make them get caught as spam.
Code:
<html><body>Please use this link <a href="http://xxx.yyy.zz.aa/asdfasdf.aspx?invite=' + CAST(@guid as varchar(100)) + '">Click Here</a> to create an account.</body></html>
How can I avoid this?
Using VB, VS 2010, I am wanting a remote web app to send me an e-mail when it finds an error using the try catch. What is the best way to do that?
View 4 RepliesI have a .exe application that runs daily. I want to avoid sending emails each time an exception is caught.I want to compile a list of errors (in a unique log file fileupload[mm/dd/yyyy].log) while the application runs. Then send an email with the log attached after it the application finishes.What would be the approach for this?
View 1 RepliesI created a UserControl and added a public DateTime property. I want to set this property in Markup (ie. <cc1:MyControl runat="server" id="MyControl1" DateTimeProp="1/1/2010" /> ) however I live in a place with a dd/mm/yyyy date format so it complains if I set something like "20/1/2010". Is there a way to set markup in my local datetime format or do I have to conform to "mm/dd/yyyy"?
View 2 RepliesI have a problem:
I've created usual Controller and View(Edit view) for editing my Entity (EntityFramework)
Here is view example:
<div class="editor-field">
@Html.EditorFor(model => model.BirthDate)
@Html.ValidationMessageFor(model => model.BirthDate)
</div>
BirthDate is Nullable<DateTime>
but during loading my View I get this exception
The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime'.
That's because of BirthDate is null in database but it is nullable and I expect that it just leaves the filed empty.
And I have Shared EditorTemplate:
@model System.Nullable<System.DateTime>
@if (Model.HasValue)
I have an XML string which contains Dates formatted "dd/MM/yyyy hh:mm:ss".
I'm loading this XML into a dataset using DataSet.ReadXml().
How can I ensure that this Date is stored in the DataSet as a typed DateTime so that I can Sort, Format and RowFilter on it accordingly.
My test harness is as below:
ASPX Page:
[code]....
obj.From = DateTime.Parse(txtFrom.Text, ci);
And it will give error String was not recognized as a valid DateTime. How it can be solved..
For the first time in my career, I'm working on an ASP.Net (v3.5) project that has been set up as a Visual Studio 2008/10 Web Site Project.
I'm not keen on this way of working this way for various reasons but for the moment and until such time as the company sees the virtue in working in an environment with namespaces, designer and project files etc., I have to continue with the existing codebase.
I've run into some odd issues since I began this but perhaps the oddest one of all is that althought VS lets me build the code, it doesn't reliably pick up compilation errors so these are not noticed until runtime.
I know the website model allows dynamic/hot compilation when a request is made for a specific but I can't see why it wouldn't do this when I manually (F5) build/rebuild the project. Its immensely annoying as you can imagine and I can't find a workaround.
When the Stored procedure is executed through SQL Server Management Studio, its taking 23 seconds,When the same Stored proc is called through web app, its throwing below copied exception. It is noticed that when the data is more than 100k records this exception is thrown other wise expected records are shown in UI. Another stored proc from the same app returns over 150k records without any excetpion. Can't conclude that the exception is in Stored proc, because it works from SQL Server Management studio, but throws below exception from Web app.
[Code]....
How show local time in datagridview collumn DateTime from database with universal datetime
View 2 RepliesI am trying to store a SQL Server datetime into MySQL datetime field, but MySQL stores the date value as all zeros. I use this function to trim the fractional part from the SQL Server datetime, but get the same result when trying to store it in MySQL.
[Code]....
I am trying to get data from mysql database and store in sqlserver database. i am getting the following error
The given value of type MySqlDateTime from the data source cannot be converted to type datetime of the specified target column.