Reputation: 701
Can anyone tell me why my parameters in the following code are always null when the controller action is called:
<% foreach (var row in Model) { %>
<tr>
<td><%=Html.ActionLink("Edit", "Edit", "Customer", new { controller = "Customer", action = "Edit", id = row.CustomerID })%>|
<%= Html.ActionLink("Sales", "List", "Sale", new { controller = "Sale", action = "List", id = row.CustomerID }, null)%></td>
<td><%= Html.Encode(row.CustomerID)%> </td>
<td><%= Html.Encode(row.FirstName)%> </td>
<td><%= Html.Encode(row.LastName)%> </td>
<td><%= Html.Encode(String.Format("{0:g}", row.DateOfBirth))%></td>
<td><%= Html.Encode(row.Address)%> </td>
<td><%= Html.Encode(row.Phone)%> </td>
</tr>
<% } %>
Controller code:
public class SaleController : Controller
{
public ActionResult List(int CustomerID)
{
SaleListModel SaleList = SaleServices.GetList(CustomerID);
return View(SaleList);
}
}
Upvotes: 0
Views: 922
Reputation: 116528
Action parameters are bound by name, not by position or type. Therefore you should change id
to CustomerID
in your calls to Html.ActionLink
:
<td><%=Html.ActionLink("Edit", "Edit", "Customer", new { controller = "Customer", action = "Edit", CustomerID = row.CustomerID })%>|
<%= Html.ActionLink("Sales", "List", "Sale", new { controller = "Sale", action = "List", CustomerID = row.CustomerID }, null)%></td>
Upvotes: 2
Reputation: 17327
You are sending a parameter named id
, but your controller actions are looking for a parameter named CustomerID
. These need to match.
Upvotes: 1
Reputation: 35407
Use the following instead. You're specifying parameters (Controller/Action) that aren't necessary.
<%= Html.ActionLink("Edit", "Edit", "Customer", new { id = row.CustomerID })%>|
<%= Html.ActionLink("Sales", "List", "Sale", new { id = row.CustomerID })%>
Upvotes: 1