Search code examples
model-view-controlleractionlink

MVC Html.ActionLink ignores the Controller parameter


I have a a view that has the following code:

<h2><%= Model.Company.CompanyName %></h2>
<h3>Projects</h3>
<ul>
<%
    foreach (Project p in Model.Company.Projects)
    {
        %>
        <li><%= Html.ActionLink(p.ProjectName,"Details", "Projects", new {id=p.ProjectID,companyId=p.CompanyID}) %></li>
        <%   
    } 
%>
</ul>
<%= Html.ActionLink("Add Project", "Create", "Projects", new {id = Model.CompanyID}) %>
<br />
<h3>Users</h3>

I have a ProjectsController but when I run the application and click on the Add Project Link it expects to go to /Company/Create instead of /Projects/Create. Am I missing something?


Solution

  • You're matching the signature that expects the route values in the third parameter and the html attributes in the fourth. Add another parameter (null is ok) and you'll get the signature that has the link text, action, controller, route values, and html attributes.

    <%= Html.ActionLink("Add Project",
                        "Create",
                        "Projects",
                        new {id = Model.CompanyID},
                        null ) %>