传统URL的ASPMvc路由问题

问题描述

| 我有一个无法更改的旧网址,该网址输出一个页面上,该页面现在需要发布到该页面的新MVC版本中: http://somesite.com/somepage?some-guid=xxxx-xxxx 现在,我试图将其映射到新的控制器,但是我需要将一些指南引入我的控制器中:
public class MyController : Controller
{
    [HttpGet]
    public ActionResult displaySomething(Guid myGuid)
    {
        var someResult = DoSomethingWithAGuid(myGuid);
        ...
    }
}
我可以随意更改控制器和路由,但是旧版网址无法更改。因此,我对如何获得某些指导感到困惑。 我尝试使用?some-guid = {myGuid}进行路由,但是路由不喜欢?,因此我尝试使其自动绑定,但是由于它包含连字符,因此似乎没有绑定。我想知道是否可以使用任何类型的属性来暗示它应该从查询字符串的一部分进行绑定... 任何帮助都会很棒...     

解决方法

        我以为你会做这样的一条路线。
routes.MapRoute(
                \"RouteName\",// Name the route
                \"somepage/{some-guid}\",// the Url
                new { controller = \"MyController\",action = \"DisplaySomething\",some-guid = UrlParameter.Optional }
            );
URL的{some-guid}部分与您的url参数匹配,并将其传递给控制器​​。 因此,如果您采取以下行动:
public ActionResult DisplaySomething(Guid some-guid)
    {
        var someResult = DoSomethingWithAGuid(some-guid);
        ...
    }
试一试,看看你过得怎么样。     ,        
routes.MapRoute(
  \"Somepage\",// Route name
  \"simepage\",// URL with parameters
  new { controller = \"MyController\",action = \"DisplaySomething\"
);
然后在您的控制器中:
public class MyController : Controller {
    public ActionResult DisplaySomething(Guid myGuid)
    {
        var someResult = DoSomethingWithAGuid(myGuid);
        ...
    }
}
    ,        尝试这个:
routes.MapRoute(\"SomePageRoute\",\"Somepage\",new { controller = \"MyController\",action = \"DisplaySomething\" });
然后在您的控制器中:
public ActionResult DisplaySomething() {
   Guid sGuid = new Guid(Request.QueryString[\"some-guid\"].ToString());
}
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...