首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MVC中处理多个自定义路由

在MVC中处理多个自定义路由
EN

Stack Overflow用户
提问于 2016-05-02 01:34:47
回答 2查看 157关注 0票数 0

我有我的家庭控制器这样设置,进入不同的功能,取决于它收到的参数。

问题是在我的家庭控制器,它把“游戏二”作为我的路线在我的家庭控制器查询。

示例

the /serchsomething <--这将搜索给定的字符串

This / gametwo <--这也是搜索,而不是去玩两个控制器

我有普通的routeconfig.cs文件,只是添加了属性。

处理多参数路由的最佳方法是什么?这样他们就不会与其他路线发生冲突或坠毁?谢谢

家庭控制器

代码语言:javascript
运行
复制
    public ActionResult Index()
    {
        ...
    }

    [HttpGet]
    [Route("{Query}")]
    public ActionResult Index(string Query)
    {
        ...
    }

    [HttpGet]
    [Route("{Query}/{Version}")]
    public ActionResult Index(string Query, int Version)
    {
        ...
    }

GameTwo控制器

代码语言:javascript
运行
复制
    [Route("GameTwo")]
    public ActionResult Index()
    {
        return View();
    }

routeconfig

代码语言:javascript
运行
复制
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-02 11:05:32

试试上面的这个

家庭控制器

代码语言:javascript
运行
复制
  [HttpGet]        
        public ActionResult serchsomething(string Query)
        {
//do something
        }

游戏2控制器

代码语言:javascript
运行
复制
      public ActionResult Index()
    {
        return View();
    }

路由

代码语言:javascript
运行
复制
    public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        /*serchsomething  action*/
                routes.MapRoute(
                    name: "Your route name 1",
                    url: "serchsomething/{Query}",
                    defaults: new
                    {
                        controller = "home",
                        action = "serchsomething"
                    }
                 );

                /*GameTwo Controller*/
                routes.MapRoute(
                   name: "Your route name 2",
                   url: "GameTwo",
                   defaults: new
                   {
                       controller = "GameTwo",
                       action = "Index"
                   }
                );
    /* default*/
            routes.MapRoute(
                  name: "Default",
                  url: "{controller}/{action}/{id}",
                  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

    }}
票数 0
EN

Stack Overflow用户

发布于 2016-05-02 10:52:05

你给出了正确的控制器名称吗?我只是把你的网址

代码语言:javascript
运行
复制
 mysite.com/gametwo

 but controller name as GameTwo  Pls change it as GameTwo and try again.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36973887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档