任何人都可以告诉我为什么在调用控制器操作时,以下代码中的参数始终为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);
}
}
答案 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
的参数。这些需要匹配。