How to specify an area name in an action link?
I have a shared master page which I am using from 2 different areas in my mvc 2 app. The master page has an action link which currently specifies the controller and action, but of course the link doesn't work if I'm in the wrong area. I see no overload for actionlink that takes an area parameter, is it possible to do?
Solution 1:
Figured it out..
Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})
Solution 2:
Something I ran into right after this, that I imagine others might run into: If you need to link from within an area to an action not in an area, you still need to specify the Area as empty string.
For instance, I moved some MVC code into an area, and found I needed to update urls in the master page that referenced other pages on the site.
To specify an url to something not in an area, use
Html.ActionLink("home", "Index", new { area = "", controller = "Home" })
Solution 3:
Use:
Html.ActionLink("Text", "ActionName", "ControllerName", new { Area = "AreaName" }, null)
Note:4th parameter is to pass route Values
, if you pass an empty parameter it will consider root structure and if you pass appropriate value it use it as area.
Also do not forget to use null
or new{}
as the 5th parameter because passing null
or new {}
while creating action link will not overload method for (text,action,controller,route data)
or its (text,action,controller,route data,html attribute)
so use the proper method