我正在开发一个包含多个项目实体的 ASP.NET mvc 3 站点,然后每个项目都有几个关联的子页面,每个子页面都与项目的一个组件一起使用。
例如,我可以有一个包含几张照片、里程碑、用户信息等的项目。我有一个项目索引视图,以及一个链接到多个组件页面的项目主页。大多数组件都有两个视图,索引和编辑/视图。
所以我为编辑和视图设置了一条路线。请注意,我的路线位于名为 ProjectManagement 的区域中
context.MapRoute(
"ProjectManagement_ProjectPageSingle",
"ProjectManagement/{controller}/{action}/{projectNumber}/{projectChildId}",
new { controller = "Project", action = "Home" }
);
我的控制器动作看起来都与此类似:
public ActionResult Edit(string projectNumber, string projectChildId)
当我直接在浏览器中输入 URL 时,这很好用。例如:
~/ProjectManagement/Milestone/Edit/39999P110175/1
但是,当我使用以下命令生成操作链接时:
<a href="@Url.Action("Edit", new { projectNumber = Model.Project.ProjectNumber, projectChildId = entry.Id})">
操作 URL 最终如下所示:
~/ProjectManagement/Milestone/Edit/39999P110175?projectChildId=1
所以路线排序工作......但动作链接生成器没有?不知道从这里去哪里。任何建议将不胜感激。
请注意,在使用@Html.ActionLink 而不是@Url.Action 时会发生同样的事情。
谢谢!