【问题标题】:Change route url in asp.net mvc在 asp.net mvc 中更改路由 url
【发布时间】:2014-02-15 18:01:45
【问题描述】:

我有登录控制器并注册 ActionResult

   public ActionResult Register()
        {
            return View();
        }

如果我将任何数据发布到 Register actionresult url 如下所示,

WebSiteName/Login/Register

我想将路由 url 更改为 WebSiteName/Login/Reg=Id?

所以我在下面尝试了但是我无法更改路由 url。

   routes.MapRoute(
         name: "something",
         url: "Login/Reg=Id?",
         defaults: new
         {
             controller = "Login",
             action = "Register",
             id = id = UrlParameter.Optional
         }
     );

那么如何在 asp.net mvc 中更改 url 呢?

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 为什么你想让你的 URL 看起来像这样?

标签: c# asp.net-mvc url asp.net-mvc-routing


【解决方案1】:

这里我从 URL 中删除了最后两个传递参数

这是我的网址链接 -> http://localhost:12345/User?value=98998?id=2

我想从 url 链接中删除 value 和 id 参数

步骤一

像这样修改你的 Routeconfig.cs

routes.MapRoute(
   "User",
   "User/{value}/{id}",
   new { controller = "User", action = "Index", value= UrlParameter.Optional, id = UrlParameter.Optional }
);

第二步

用户控制器

public ActionResult Index(string value, int id)
{
    // write Your logic here 
    return view();
}

第三步

为 UserController 创建一个索引视图

@Html.ActionLink("LinkName", "Index", "User", new {value = "98998", id = "2"},null)

我们终于得到了一个结果:http://localhost:12345/User/98998/2

同样我们可以从 url 中删除多个参数

【讨论】:

    【解决方案2】:

    您正在尝试使用不正确的 url 参数形式。您有以下选择:

    1. Url 部分参数:WebSiteName/Login/Reg/{id}

      为此,您可以使用以下配置

      routes.MapRoute(
           name: "something",
           url: "Login/Reg/{id}",
           defaults: new
           {
               controller = "Login",
               action = "Register",
               id = UrlParameter.Optional
           }
       );
      
    2. 查询字符串参数:WebSiteName/Login/Reg?id={id}

      这里根本不需要在config中指定参数:

      routes.MapRoute(
           name: "something",
           url: "Login/Reg",
           defaults: new
           {
               controller = "Login",
               action = "Register"
           }
       );
      

    当然,在这两种情况下,都假定您的操作 Register 具有参数 id。

    【讨论】:

    • 我在“默认”控制器操作等之前编写了您的代码,现在可以使用。如果我在“默认”之后编写您的代码,它不起作用,我不知道为什么。感谢您的帮助。
    • @user3230063,这很容易解释。当接收到新请求时,ASP.NET MVC 会尝试在路由表中找到对应的路由,并获取第一个匹配项。默认路由几乎匹配所有内容,因此不太可能到达之后添加到表中的任何内容。这就是为什么您应该在默认路由之前添加所有特定路由。
    • 请帮我解答这个问题。 stackoverflow.com/questions/21335361/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 2013-04-21
    • 2010-11-22
    • 2010-11-13
    相关资源
    最近更新 更多