You are sending a parameter named id
, but your controller actions are looking for a parameter named CustomerID
. These need to match.
MVC actionlink parameter never sending
-
03-06-2022 - |
Question
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);
}
}
Solution 2
OTHER TIPS
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>
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 })%>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow