Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best Practices for MVC, jQuery and Handling Errors

Does anyone have a elegant way of dealing with errors in ASP.Net MVC? I constantly run into issues when dealing with requests to controller actions where the Action can be used for both normal requests and AJAX requests. The problem I have is finding an elegant way of dealing with these issues.

For example, how could I handle validation errors? Ideally I would like to submit the form to a server via AJAX and then return any errors the action threw and display them on the page, but for the same to work via a normal postback when the client has JavaScript turned off. I know I can use the jQuery Validation Plugin as they type but it's isn't the same, nor is it ideal considering the restrictions on the data to be validated would be specified in two places (my nHibernate Validation Mappings and in the JavaScript file).

How about when the user requests a non-existent record? Should I redirect to a 404 page? What if the request was made via Ajax (say, to load in a dialogue box).

So:

How do you handle errors thrown by controller actions when they were called using Ajax? Especially Model State errors (i.e validation). Can I send it via JSON?

Do you have tips on how to make controller actions which work well when called normally and via Ajax? This is a annoying problem when writing action methods. Because of the return type I may want a different result depending on the caller. Is there anyway to do this without having two Action Methods?

What is your general strategy for handling errors in actions on MVC? Do you redirect to error pages a lot? Do you redirect to another page?

Edit: I think part of the problem is I want different things to happen, so if there is an error I would want to stop any progress until it's fix and therefore send a error back. Otherwise I may want to update different areas of the page. But if I had one return how would I know it's a success or failure without wrapping it an object that has a property indicting so (thus making it more difficult to use partial views)

Thanks

like image 324
Damien Avatar asked Aug 04 '09 16:08

Damien


People also ask

What type of Errors does it handle in MVC?

It can only handle 500 level errors that happen within an MVC action method. It does not track exceptions that help outside of the MVC pipeline. Exceptions may occur in other HTTP modules, MVC routing, etc.

What are the best practices when using jQuery?

It’s good practice to check the element but not obvious code. I recommend always check the element while using jQuery plugin such as a slider, data table etc. It saves your app from errors. 9. Optimize Selectors jQuery selectors allow you to select and manipulate HTML element (s) quite easily. Some jQuery methods use browser native method.

How do you handle exception handling in MVC?

When you create an MVC application in Visual Studio, it does not implement any exception handling technique out of the box. It will display an error page when an exception occurred. For example, consider the following action method that throws an exception.

What is handleerrorattribute in MVC?

The HandleErrorAttribute inherits from FilterAttribute and can be applied to an entire controller or individual controller action methods. It can only handle 500 level errors that happen within an MVC action method. It does not track exceptions that help outside of the MVC pipeline. Exceptions may occur in other HTTP modules, MVC routing, etc.


1 Answers

The AJAX call is not a page refresh so I would definitely not redirect to a 403, 404 etc. I would display a client side dialog explaining the unexpected result of the request appropriately. Your controller can return the results of failed validation to the AJAX call in a similar fashion to how it would return success data so your dialog can also display whatever is required in this scenario.

like image 191
Adam Ralph Avatar answered Oct 11 '22 16:10

Adam Ralph