Вопрос

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

}
Это было полезно?

Решение 2

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

Другие советы

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 })%>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top