zxprince
zxprince

Reputation: 387

MVC3 HTML ActionLink not working

I have a DashBoardController.cs here i have this code

public class DashBoardController : Controller
    {
        //
        // GET: /DashBoard/

        [Authorize]
        public ActionResult Index()
        {
            return View();
        }

        //
        // GET: /New Project/

        [Authorize]
        public ActionResult NewProject()
        {
            return View();
        }

        //
        // GET: /File Upload/

        public ActionResult UploadFile()
        {
            return View();
        }

        [HttpPost]
        public ActionResult UploadFile(HttpPostedFileBase file)
        {
            // Verify that the user selected a file
            if (file != null && file.ContentLength > 0)
            {
                // extract only the fielname
                var fileName = Path.GetFileName(file.FileName);
                // store the file inside ~/App_Data/uploads folder
                var path = Path.Combine(Server.MapPath("~/Uploads"), fileName);
                file.SaveAs(path);
            }
            // redirect back to the index action to show the form once again
            return RedirectToAction("Index", "Home");
        }

    }

I have another masterlayout file here i have this code

<div id="LeftColumn" class="ui_style_floatLeft">
            <div id="menuWrapper">
                <ul class="menu">
                    <li class="menuDashBoard">@Html.ActionLink("Dashboard","Index")</li>
                    <li class="menuProject"><a href="#">Project</a>
                        <ul>
                            <li>@Html.ActionLink("New Project","NewProject")</li>
                            <li><a href="#">Projects</a></li>
                        </ul>
                    </li>                   
                    <li class="menuAccount"><a href="#">Account</a>
                        <ul>
                            <li>@Html.ActionLink("Change Password", "ChangePassword", "Account")</li>
                        </ul>
                    </li>                  
                </ul>               
             </div>
        </div>

But If i goto Change Password action link then other link (New Project, Dashboard) not working. i try @Url.Action into a herf attr but not working :(

what should i do now ?

Upvotes: 1

Views: 9154

Answers (4)

Paleta
Paleta

Reputation: 980

Take a look closely, I think you did not put the controller for the "NewProject" and "Index" methods

try replacing

@Html.ActionLink("New Project","NewProject")

for

@Html.ActionLink("New Project","NewProject", "DashBoard")

and

@Html.ActionLink("Dashboard","Index")

for

@Html.ActionLink("Dashboard","Index", "DashBoard")

Upvotes: 0

jrob
jrob

Reputation: 532

  • LinkText: "Dashboard"
  • ActionName: "index"
  • ControllerName: "dashboard"

    @Html.ActionLink("Dashboard", "index", "dashboard")

If you are using areas to group controllers into different areas you would need.

@Html.ActionLink("Dashboard", "index", "dashboard", new { area = "YourAreaName"})

Upvotes: 1

Shyju
Shyju

Reputation: 218882

Use this overload

@Html.ActionLink("New Project","NewProject","DashBoard")

this is the format

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName
)

Upvotes: 0

Michael Haren
Michael Haren

Reputation: 108376

You need to include the controller name in your action link:

@Html.ActionLink("Dashboard","Index","DashBoard")

If you leave out the controllerName, then the links will be constructed with the current controller. Since you navigated to the AccountController, the link that was supposed to point to the DashboardController broke.

In shared areas (like navigation), you'll usually want to include the controller reference.

Upvotes: 1

Related Questions