【问题标题】:mvc url rewritingmvc url重写
【发布时间】:2011-04-23 23:39:05
【问题描述】:

所以现在写我的 Url 看起来像 domain.com\MyAction?var1=x&var2=y&var3=z。

现在,为了让 seo 和用户更友好,我想放弃那种写法,采用这种 url - doman.com\MyAction\x\y\z (显然现在顺序很重要,这没有'在上一个网址中无关紧要)

最好的方法是什么?

目前:

return RedirectToAction("MyAction", new {var1 = x, var2= y, var3= z});

将页面重定向到 domain.com\x?var1=y&var2=z&var3=t。

从现在开始需要做什么...?

【问题讨论】:

标签: asp.net-mvc url-rewriting


【解决方案1】:

使用所有这些参数添加一个路由条目(检查您的 global.asax):

routes.MapRoute(
   "MyAction",
   "MyAction/{x}/{y}/{z}",
   new
   {
       controller = "yourcontrollerhere",
       action = "MyAction"
       //default values if the parameters are optional:
       //,x = UrlParameter.Optional
   });

【讨论】:

  • "MyAction/{x}/{y}/{z}",但是如何在填写 x 和 y 时使 z 可选,而在填写 x 时如何使 y 可选...
  • 您不能使用您选择使用的 url 使 y 成为可选项。您必须定义一个正确描述参数的 url。老实说,我什至不确定您是否应该进行此更改, ?color=blue 非常清楚地传达了意图,即您似乎没有本质上是分层的场景,因此只有 x/y/z 会给您带来麻烦。然后你会有像 /color/blue/height/10/width/20 这样的东西,这并不比 ?color=blue&height=10&width=20 更友好。
【解决方案2】:

试试这样的:

var route = new System.Web.Routing.RouteValueDictionary();
route.Add("var1", "x");
route.Add("var2", "x");
route.Add("var3", "x");
return RedirectToAction("MyAction", route);

【讨论】:

    【解决方案3】:

    我会查看 scott gu 和 scott hanselman 的 asp.net mvc roxio 书 书呆子晚餐演示的第一章是免费的,我相信它涵盖了 url 路由 aspworkshops.com 也是一个很好的 mvc 资源,由 stephen wather 在 mvc 上写了 sams unleashed 书

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 2012-06-03
      • 2015-07-15
      • 2015-07-24
      • 2012-07-14
      • 2011-08-24
      • 1970-01-01
      • 2013-01-19
      • 2023-03-05
      相关资源
      最近更新 更多