Nhìn vào mã của tôi mà tôi tạo ra trong một Xem phần: Có cách đơn giản làm thế nào để tham gia hai giá trị RouteValueDictionary để vượt qua các thông số để Html.ActionLink
<% foreach (Customer customerInfo in Model.DataRows) {%>
<tr>
<td>
<%=Html.ActionLink(
customerInfo.FullName
, ((string)ViewData["ActionNameForSelectedCustomer"])
, JoinParameters(customerInfo.id, (RouteValueDictionary) ViewData["AdditionalSelectionParameters"])
, null)%>
</td>
<td>
<%=customerInfo.LegalGuardianName %>
</td>
<td>
<%=customerInfo.HomePhone %>
</td>
<td>
<%=customerInfo.CellPhone %>
</td>
</tr>
<%}%>
Ở đây tôi đang xây dựng bảng đơn giản mà hiển thị chi tiết của khách hàng.
Như bạn có thể thấy, trong mỗi hàng, tôi đang cố tạo một liên kết sẽ chuyển hướng đến một hành động khác.
Hành động đó yêu cầu ID khách hàng và một số thông số bổ sung.
Tham số bổ sung khác nhau cho mỗi trang mà Chế độ xem một phần này đang sử dụng. Vì vậy, tôi quyết định thực hiện các phương thức Hành động để chuyển các tham số bổ sung đó trong cá thể ViewData dưới dạng RouteValueDictionary.
Bây giờ, trên quan điểm tôi có một vấn đề, tôi cần phải vượt qua customerId và RouteValueDictionary cùng nhau vào phương pháp Html.ActionLink. Điều đó làm cho tôi tìm ra cách để kết hợp tất cả các tham số đó thành một đối tượng (hoặc đối tượng hoặc dụ mới RouteValueDictionary)
Vì cách MVC thực hiện, tôi không thể tạo phương thức trong codebehind class (không có codebihind trong MVC) sẽ tham gia các tham số đó.
Vì vậy, tôi đã từng xấu xí cách - chèn mã nội tuyến:
...script runat="server"...
private RouteValueDictionary JoinParameters(int customerId, RouteValueDictionary defaultValues)
{
RouteValueDictionary routeValueDictionary = new RouteValueDictionary(defaultValues);
routeValueDictionary.Add("customerId", customerId);
return routeValueDictionary;
}
...script...
Bằng cách này là rất xấu xí đối với tôi, bởi vì tôi ghét phải sử dụng mã nội tuyến trong Xem phần.
Câu hỏi của tôi là - có cách nào tốt hơn để tôi có thể trộn các thông số được truyền từ hành động (trong ViewData, TempData, khác ...) và tham số từ chế độ xem khi tạo liên kết hành động hay không.
Tôi có thể xây dựng liên kết này theo cách khác không?
Cảm ơn!
câu trả lời xuất sắc. +1. Chào mừng bạn đến với SOF và cảm ơn bài đăng. – JoshYates1980