首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接受可选参数的RouteConfig设置

接受可选参数的RouteConfig设置
EN

Stack Overflow用户
提问于 2014-06-20 15:20:35
回答 2查看 3.7K关注 0票数 3

我在设置RouteConfig文件以接受一个可选的记录ID作为URL的一部分时遇到了问题,如下例所示。

代码语言:javascript
复制
http://localhost/123 (used while debugging locally)

or even

http://www.foobar.com/123 

理想情况下,我希望将记录ID (如上面的例子中的123)作为参数传递到Home控制器的Index视图中。我认为默认的routeconfig就足够了(使用ID作为可选元素),但显然应用程序试图将浏览器引导到一个名为'123‘的视图,而这个视图显然并不存在。

我当前的RouteConfig.cs如下所示:

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

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

如能在这方面提供任何协助,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-20 15:53:17

你的路线是:

代码语言:javascript
复制
{controller}/{action}/{id}

这是你的网站,然后是你的控制器,然后是你的行动,然后是身份证。

你想要的只是网站然后身份证:

代码语言:javascript
复制
routes.MapRoute(
    name: "Default",
    url: "{id}",
    defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
);

然后,这将击中控制器

代码语言:javascript
复制
public class DefaultController : Controller
{
    public ActionResult Index(int id)
    {
    }
}
票数 3
EN

Stack Overflow用户

发布于 2014-06-20 15:49:10

"{controller}/{action}/{id}"告诉MVC,一个路由可能有一个控制器名,或者它可能有一个控制器名,或者它可能有两个后面跟着一个ID。如果只给出一个ID,路由就无法理解它应该是一个ID而不是一个动作或控制器名称。

如果您从未计划过有任何其他控制器或操作,这样的操作可能会奏效:

代码语言:javascript
复制
routes.MapRoute(
    name: "Default",
    url: "{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

但这可能是个坏主意。几乎每个站点都至少有一个关键词来表示ID所代表的内容。例如,StackOverflow有“/质询/{id}”。

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

https://stackoverflow.com/questions/24330596

复制
相关文章

相似问题

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