Tôi có một liên kết trong một trang mà đi như thế này:Url.Action() bao gồm các thông số không mong muốn, cố gắng để có thêm quyền kiểm soát
Url.Action("List", "Item", new { category = "seasons" })
Các Route phù hợp với trang đó cũng có một parentGroup và nhóm thông số
Ex:/Seasons/Moober/xanh/1 ->/{loại}/{parentGroup}/{nhóm}/{id}
vấn đề là khi tôi trên trang đó và sử dụng Url.Action, nó thêm tất cả các giá trị tuyến bị thiếu ngay cả khi tôi cố gắng tạo liên kết đến các danh mục/{category}, nó vẫn sẽ thêm parentGroup và nhóm.
Tôi đã tìm thấy this post, mà đề nghị làm việc đó như thế này:
Url.Action("List", "Item", new { category = "seasons", group = "", parentGroup = "" })
Nhưng nó không hoạt động đối với tôi vì nó loại bỏ chúng khỏi url của tôi, nhưng cho biết thêm họ như các thông số: /Seasons parentGroup = Moober & nhóm = Xanh
Tôi đang sử dụng MVC3. Có cách nào để buộc Url.Action() chỉ sử dụng các tham số được cung cấp hoặc hủy bỏ những thông số tôi không muốn?
Đây là các tuyến đường.
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"ItemFromCategoryParentGroupSubGroup", // Route name
"{category}/{parentGroup}/{group}/{id}/{language}", // URL with parameters
new { controller = "Item", action = "Show", page = 1, language = ConfigurationManager.AppSettings["DefaultLanguage"] }, // Parameter defaults
new
{
category = _validCategory,
parentGroup = _validGroup,
group = _validChildGroup,
id = _validItemInChildGroup
}
);
routes.MapRoute(
"ItemListFromParentGroup", // Route name
"{category}/{parentGroup}/{group}/{language}", // URL with parameters
new { controller = "Item", action = "List", page = 1, language = ConfigurationManager.AppSettings["DefaultLanguage"] }, // Parameter defaults
new
{
category = _validCategory,
parentGroup = _validGroup,
group = _validChildGroup
}
);
routes.MapRoute(
"ItemWithGroup", // Route name
"{category}/{group}/{id}/{language}", // URL with parameters
new { controller = "Item", action = "Show", page = 1, language = ConfigurationManager.AppSettings["DefaultLanguage"] }, // Parameter defaults
new
{
category = _validCategory,
group = _validGroup,
id = _validItemInGroup
}
);
routes.MapRoute(
"ItemListWithGroup", // Route name
"{category}/{group}/{language}", // URL with parameters
new { controller = "Item", action = "List", page = 1, language = ConfigurationManager.AppSettings["DefaultLanguage"] }, // Parameter defaults
new
{
category = _validCategory,
group = _validGroup
}
);
routes.MapRoute(
"ItemListFromCategory", // Route name
"{category}/{language}", // URL with parameters
new { controller = "Item", action = "List", page = 1, language = ConfigurationManager.AppSettings["DefaultLanguage"] }, // Parameter defaults
new
{
category = _validCategory
}
);
Edit:
Tôi có một cách giải quyết cho những khoảnh khắc đó trông như thế này: Url.RouteUrl ("ItemListFromCategory") tôi về cơ bản buộc cùng một tuyến đường mà là vụ phải được kết hợp bởi Url.Action ("List", "Item", new {category = "seasons"}) Và lần này không có tham số nào được thêm tự động.
Vấn đề với điều này là tôi buộc phải sử dụng các tuyến đường được đặt tên.
bạn có thể hiển thị cho chúng tôi tuyến đường của bạn không? – frennky
Tôi có thể, tôi chỉ hy vọng họ không quá dài. – Emanuel