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);
    }

}
Était-ce utile?

La solution 2

You are sending a parameter named id, but your controller actions are looking for a parameter named CustomerID. These need to match.

Autres conseils

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 })%>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top