Disable action method from being called from the address bar
Asked Answered
R

2

9

I have a method in my controller that I don't want to be called from the address bar in the browser...

Is there a way to do that? Maybe some kind of annotation, modification in the route configuration? Which are my options?

Rositaroskes answered 22/5, 2013 at 16:26 Comment(1)
How would you prefer this Action to be called? HttpPost only? Or are you going to call it from within the Controller? Could it just be a regular method instead of an Action? I think the only way you're going to be able to do this is by using the [HttpPost] attribute.Choirmaster
E
16

If you are going to use this action only from within your controller or Views then you can use ChildActionOnly attribute.

If you want to access it using POST then you can use [HttpPost] attribute.

But if you wish to use it using GET (i.e. using AJAX call etc) and don't want users to access it using address bar then you can follow this tutorial to make your actions AJAX only.

Or, if you simply want a method that is not an Action at all (i.e. cannot be called using HTTP) then you can either make it private or use [NonAction] attribute

Ellett answered 22/5, 2013 at 17:38 Comment(1)
I would like to add the ChildActionOnly will only work from Views. If tried to call them from Controller, you will face error as The action 'Authenticate' is accessible only by a child request.Aveyron
P
8

Use NonAction attribute on the method.

Potto answered 25/5, 2015 at 13:31 Comment(2)
Can you explain this attribute please ?Benford
@Zulu, the attribute is to be applied to the controller method which you want to make unavailable as an action: see msdn.microsoft.com/en-us/library/….Potto

© 2022 - 2024 — McMap. All rights reserved.