首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC路由配置

MVC路由配置
EN

Stack Overflow用户
提问于 2016-09-26 08:55:37
回答 1查看 47关注 0票数 1

我的HomeController中有以下内容:

代码语言:javascript
复制
public ActionResult Share(string id)
{
    Debate debate;
    try
    {
        debate = Db.Debates.Single(deb => deb.ShareText.Equals(id));
    }
    catch (Exception)
    {
        return RedirectToAction("Index");
    }
    return View(debate);
}

这允许我这样调用url:

http://localhost:50499/Home/Share/SomeTextHere

我在routeconfig文件中这样配置了路由:

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

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

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

我想知道如何以这种方式调用URL:

http://localhost:50499/Debate/SomeTextHere

我一直在努力解决这个问题,但运气不佳。实现这一目标的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 09:15:07

正如@StephenMuecke在评论中提到的,您需要更改路由以使其不那么通用。

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

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

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

现在,Share路由将允许http://localhost:50499/Debate/SomeTextHere路由到适当的控制器操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39693321

复制
相关文章

相似问题

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