ASP.NET MVC5将ID和重定向传递给另一个控制器

时间:2015-08-20 06:33:56

标签: asp.net-mvc

尝试重定向到另一个控制器操作(课程),同时从不同的控制器传递所选的ID,该控制器通过视图模型显示COurses

向用户显示编辑的正确语法是什么,重定向到课程控制器,选择课程控制器上的编辑操作并传入选定的ID

我试过

 @Html.ActionLink({"Edit", Action="Edit", area = "Courses", courseID = item.CourseID}) 

但语法错误

提前致谢

2 个答案:

答案 0 :(得分:3)

假设您没有编辑课程的路线,您可以使用Html.Routelink并使用默认路由。

@Html.RouteLink("Edit", "Default", new System.Web.Routing.RouteValueDictionary {{"controller", "courses"}, {"action", "edit"}, {"id", item.CourseID }})

但是,如果你有一个特定的路线,如下面的样本路线,

 routes.MapRouteLowerCase(
            "Edit_course", // Route name
            "courses/edit/{courseid}", // URL with parameters
            new
            {
                controller = "Courses",
                action = "Edit",
                courseid = UrlParameter.Optional
            },
            new string[] { "MyProject.Controllers" }
        );

我想你可以使用:

@Html.RouteLink("Edit", "Edit_course", new System.Web.Routing.RouteValueDictionary {{"controller", "courses"}, {"action", "edit"}, {"courseid", item.CourseID }})

这样,您可以为该特定路线生成网址,而不是仅根据操作名称的第一个匹配路线创建网址。

答案 1 :(得分:2)

以下内容:

@Html.ActionLink("Edit", "Edit", "Courses", new { courseID = item.CourseID},null)

会将您重定向到:localhost:56802/Courses/Edit?courseID=1

为了将您重定向到localhost:56802/Courses%20/Edit/2

方法1:

如果您使用默认路线:

                    routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });

使用以下内容:

@Html.ActionLink("Edit", "Edit", "Courses", new { id = item.CourseID},null)

方法2: 使用以下路线:

                        routes.MapRoute(
                        name: "Default",
                        url: "{controller}/{action}/{courseID}",
                        defaults: new { controller = "Home", action = "Index", courseID = UrlParameter.Optional });

@Html.ActionLink("Edit", "Edit", "Courses", new { courseID = item.CourseID},null)