Does An Action Filter Override A Controller Filter
Aug 25, 2010does a action filter override a controller filter?
View 2 Repliesdoes a action filter override a controller filter?
View 2 RepliesIf I have a Filter applied to a controller with a property defined as true.
Can I apply the same filter to one of its actions with value false to override the value for that specific action?
I have decorated my base controller with a couple of action filters. They work fine.
One of those filters sets up the request - does things like set the culture based on the domain, etc.
I also have a handful of actions that require authorization using the Authorize attribute.
My problem is that when an user attempts to request a page they are not authorized to access, the authorization filter kicks in and redirects them to a page telling them that they cannot vie the page.
The issue is that the action filters never run so the culture and other request data is never set. This effectively causes language to be wrong in the view and other data to be missing.
I know that authorization filters run first but my question is this: How can I design this such that I can ensure that certain methods are always run before the view is returned, regardless of the authorization.
Does any one know how to dynamically add ActionFilter to an Action?
View 3 RepliesI am trying to return different views with xml and json result when say -/API/Security/Authentication/login.xml is passed or
API/Security/Authentication/login.json is passed . I have adde mapped routes for this path.
I have used the ActionFilter attribute for the Login Action Result to automatically check for xml or json and then return the appropriate view.
what to put in the Login.aspx file to render appropriate xml or json based on the above url passed ?
The code is below:
[Code]....
I just learned about actionfilters yesterday and thought it would be great if i could put my meta data into a action filter and change the page title, page description etc from 1 location based on a value from the controller.
I've getting so far, but cannot seem to work out how to add the default value to the controller and pass that value to my actionfilter.
[Code]....
I need good css for Gridview just like the mac css
can we provide the filter functionality to gridview like the excel filter.
In securing actions/controllers, do I have to create a custom filter or use MVC built-in filter?
To use the built-in attribute Authorize() on an action/controller or create a separate class that inherits the ActionFilterAttribute which has a method (OnActionExecuting) to override and do the authentication there?
I need to create application wide error handling mechanism. I was evaluating Action Filter for that matter. But- Action filter will just exectute against actions/controller- what about error at custom view engine or Extension method for HTML helper.: to handle them i need to implement traditional Asp.net mechanismCan anyone suggest best common approach which can handle error for all Controller, View, Model or custom helpers if any.
View 3 RepliesIn my organization we use nested groups. For a particular usage, we have a group (let's assume that the group name "kuku"), and the names of all the nested groups under it contains "kuku" as well.
We may assume that no other group in the LDAP has "kuku" in the name.
I need to create a filter which will return all the users which belong to one of the "kuku"s group.
Obviously, using this filter will bring only the head kukus
(&(&(objectclass=user)(objectclass=person))(memberOf=CN=kuku,cn=...rest of the group DN...))
How can I use wild card to fetch all users which belong to any kuku?
For example: (&(&(objectclass=user)(objectclass=person))(memberOf=CN=.*kuku.*))
Is it possible to edit the content of a view from a action filter.
What I am working on is a Resourcemanager that I can use to manage
my style sheets, js and other resources. I want to be able to put
lines in the the view any where like Html.ResourceManager.AddScriptFile("MyScript")
or Html.ResourceManager.AddCSSFile("MyCSS")
and at the end of the view call Html.Render(); this would then place the content of my resources at this point. My problem is that I want to put the CSS stuff at the top of the view, but them problem is that it is renderend at the end of the view, so I tought that I could use a ActionFilter to move it to the top of the view.
1) What would be the best way to do this task ?
2) Is there any resources that describe the way that the MVC framework works in more detail ?
I have an app I am transitioning to MVC3 to see what the upgrade path is essentially. I've hit a snag. I believe I've run into a change that may be due to the changes for Dependency Injection in action filter attributes, but I have been unable to track down the cause, and the "correct" solution.This project uses StructureMap and NHibernate. The NHibernate session is started at the beginning of each request, and ends at the end of each request, thanks to a small module. This is just to give an idea of the stack involved...o I have a few custom Authorize attributes (Inheriting from AuthorizeAttribute) that perform some more complicated authorization logic for specific actions that they decorate. Part of their functionality involves using two repositories which they must either (a) have injected, or (b) get from the StructureMap ObjectFactory themselves. In MVC2 I was using option b, so that the CONSTRUCTOR of the attribute looked like this:
[Code]....
This worked fine, as in MVC2 the constructor was called each time the attribute was evaluated. This BREAKS in MVC3, where it would appear that this is no longer the case. Due to this apparent change, the FIRST time this attribute is evaluated, it runs fine, but each subsequent time, any calls in the repositories fails because it claims the NHibernate Session object hasn't been started! The reason being, as far as I can tell, that the CustomAuthorizeAttribute is created once, and then held in whatever state it exists in at that point for the lifetime of the application... Which means that the dependencies inside of it (Which SHOULD go out of scope at the end of each request, and be reinstantiated / fetched at the beginning of subsequent requests), are instead persisting with it becoming stale after the first evaluation.After banging my head against the desk for a few hours, I realized that simply moving these calls to the ObjectFactory into the AutorizeCore method made everything work again.Now, all of this was of course, a hack, because there wasn't a good easy to do real dependency injection into attributes in MVC2. I hear that is changed in MVC3, and I am wondering if this behavior is in response this change, and if so, what do I need to do to make this work?
I am looking for a Cache filter which can be removed when certain action is performed.
Suppose,I have Index action which is loading records and cached with a filter for a minute.As long as I am calling Index the action must be cached and no trip to db.
Once I create a record in Create action than it should remove the cache a load the records from DB.I have found one in Ninject web example which is like below. I am looking for same solution.
[Cache(0, 0, 5, 0)]
public ActionResult Index()
{ [code]...
[Code]....
and
[Code]....
Filter for the child controller executes earlier than for the base class... How can i revert that behavior ? Order prop doesn't help...
I need to get an image url using FileUpload Control. When i do it in the explorer it shows all files to select. But i need to show only ".jpg,.gif" files. How can i do it.
View 3 RepliesI have a custom actionfilter that strips out the whitespaces before the html is rendered in browser and it is working fine. However I have been unable to unit test the custom action filter. Ideally I want to do an assert on the sample html that all whitespaces have been removed. Code looks something like this.
[Code]....
I'm trying to get the current action method by this way.
ActionDescriptor actionDescriptor = filterContext.ActionDescriptor;
string actionName = actionDescriptor.ActionName;
var controllerType = filterContext.Controller.GetType();
var actionMethod = controllerType.GetMethod(actionName);
But if there're two action method with the same name, the AmbiguousMatchException will occur there. Without the ActionMethod property, how can I get the current action method now?
I thought this would be easy and maybe it is but it's eluding me.
In an action filter (MVC 2) I want to add/edit one of the parameters for the type I'm passing to my action method.
I have an action method:
[Code]....
Bar is a simple class for viewData:
[Code]....
In my BarFilter action filter OnActionExecuting method I want to add a value for paramA which is not set by the view so that Bar will be fully populated in my Foo action method. I've tried various methods of adding values to ViewData, ModelState, Model etc. but I always get a null returned in Foo.
here's my situation - I've created some ActionFilterAttributes that I want to apply to a custom Controller class that my other controllers can inherit from. The problem is, I need to set a property on the attribute from the final inheriting controller. So I have something like this :
[Code]....
[Code]....
How can I define a Dynamic ViewModel property in MVC 3 inside an action filter?
I am looking to have something like but inside the ActionFilter and not in the controller:
[Code]....
i want to create filter in action method for filtering particular user from my database for the login program....
View 2 RepliesLets say I have a simple controller for ASP.NET MVC I want to test. I want to test that a controller action (Foo, in this case) simply returns a link to another action (Bar, in this case).How would you test TestController.Foo? (either the first or second link)
My implementation has the same link twice. One passes the url throw ViewData[]. This seems more testable to me, as I can check the ViewData collection returned from Foo(). Even this way though, I don't know how to validate the url itself without making dependencies on routing.The controller:
public class TestController : Controller
{
public ActionResult Foo()[code].....
I'm trying to add file upload functionality to a page. I've got a form that posts the selected file to a controller with a 'savefile' method. But if I don't add a get version of 'savefile' I'll get a 404 error. Here is the form code which is presented on the Index page:
[Code]....
And here is the controller code:
[Code]....
Intuitively I don't think I should need a GET version of SaveFile but if omit it I get a 404 error when the form posts. Why should I need a GET version of SaveFile when all I want is to post a form and save the file?
How do you get the current action / controller name in a controller or class?
i can't show it in my view but that's not what i want.
I have a User entity and a department entity. I have a UserViewModel and DepartmentListModel which has List of departments.
UserViewModel has a property of type DepartmentListModel .
Now on user/create action I need to populate DepartmentListModel by calling DepartmentController's list action. List action returns populated DepartmentListViewModel.
From UserController how do I set DepartmentListModel ?
I tried doing so
[Code]....
But RedirectToAction returns RediretToRouteResult