【问题标题】:How to redirect from a url in MVC5如何从 MVC5 中的 url 重定向
【发布时间】:2016-04-23 06:10:34
【问题描述】:

我有一个网址,上面写着 www.test.com/12345。当用户点击这个 url 时,他应该被重定向到相应的操作方法,其中 "12345" 接受作为其参数。

我有个小想法,可以和RouteConfig一起使用,但还是没有清晰的画面。

谁能帮我解决这个问题?

动作方法是

[HttpPost]
public ActionResult DetailsByCode(string code)
{    
     IEnumerable<IProductListDto> prdctListDto = _productListDetails.GetProductListByCode(accessCode);
     Return "success";
}

并且路由配置是

routes.MapRoute(
     name: "Accesscode",
     url: "{Areas}/{controller}/{action}/{id}",
     defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode", id = string.Empty }
 ); 

我完整的 routeconfig.cs 是

  public static void RegisterRoutes(RouteCollection routes)
    { 
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "DetailsByCodeRoute",
            url: "{Areas}/{controller}/{action}/{id}",
            defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode" }
          );

        routes.MapRoute(
            name: "Accesscode",
            url: "{Areas}/{controller}/{action}/{id}",
            defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode", id = string.Empty }
        );

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

        routes.MapRoute(
            name: "ChangePassword",
            url: "{Areas}/{controller}/{action}/{id}",
            defaults: new { Areas = "User", controller = "User", action = "ChangePassword", id = string.Empty }
        );
        routes.MapRoute(
           name: "PasswordReset",
           url: "{Areas}/{controller}/{action}/{id}",
           defaults: new { Areas = "User", controller = "User", action = "PasswordReset", id = string.Empty }
       );

【问题讨论】:

  • 那么当您现在输入该网址时会发生什么?它有任何例外吗?发布您的routeconfig.cs 以及action 方法代码。
  • 您需要指定控制器和方法,或者定义一个特定的路由,其中​​至少包含一些前缀来标识控制器/动作。
  • @ramiramilu 我用操作方法和路由配置更新了我的问题
  • 那么,当您输入www.test.com/12345 时,您是否尝试点击DetailsByCode?你的控制器名称是什么?
  • @ramiramilu 是的,我的控制器名称是 Student

标签: visual-studio-2013 asp.net-mvc-5 routeconfig


【解决方案1】:

在您的情况下,您可以使用路由约束。

例如阅读这篇文章。 http://www.c-sharpcorner.com/UploadFile/ff2f08/custom-route-constraints-in-Asp-Net-mvc-5/

【讨论】:

    【解决方案2】:

    我没有添加新路由,而是在 Routeconfig.cs 中添加了一行用于启用属性路由。

    routes.MapMvcAttributeRoutes();
    

    动作方法前一行

    [Route("{accesscode:int}")]
    

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      相关资源
      最近更新 更多