MVC actionlink参数永远不会发送

时间:2013-07-17 16:37:24

标签: asp.net-mvc actionlink html.actionlink

任何人都可以告诉我为什么在调用控制器操作时,以下代码中的参数始终为null:

<% 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>



<% } %> 

控制器代码:

public class SaleController : Controller
{

    public ActionResult List(int CustomerID)
    {
        SaleListModel SaleList = SaleServices.GetList(CustomerID);
        return View(SaleList);
    }

}

3 个答案:

答案 0 :(得分:2)

动作参数按名称​​绑定,而不是按位置或类型绑定。因此,您应该在调用id

时将CustomerID更改为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>

答案 1 :(得分:1)

请改用以下内容。您正在指定不必要的参数(控制器/操作)。

<%= Html.ActionLink("Edit", "Edit", "Customer", new { id = row.CustomerID })%>|
<%= Html.ActionLink("Sales", "List", "Sale", new { id = row.CustomerID })%>

答案 2 :(得分:1)

您正在发送名为id的参数,但您的控制器操作正在查找名为CustomerID的参数。这些需要匹配。