Asp.net mvc MVC4 Razor使用route.config将ID附加到url

Asp.net mvc MVC4 Razor使用route.config将ID附加到url,asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,我只是无法实现在URL中显示id的目标。以下是我迄今为止所做工作的一个例子 这是我的博客控制器: public ActionResult BlogPost(int hiddenBlogId) { TempData["id"] = hiddenBlogId; return View(_repository); } 这是我的route.config: routes.MapRoute( "MyBlog

我只是无法实现在URL中显示id的目标。以下是我迄今为止所做工作的一个例子

这是我的博客控制器:

 public ActionResult BlogPost(int hiddenBlogId)
    {

        TempData["id"] = hiddenBlogId;
        return View(_repository);
    }
这是我的route.config:

routes.MapRoute(            
            "MyBlog", // Route name
            "blog/{action}/{id}", // URL with parameters
                new { controller = "Blog", action = "blogpost", id = @"0|-?[1-9]\d*" } // Parameter defaults
        );
我完全没有抓住要点。我如何获取进入我的方法/操作BlogPost的参数,然后将其显示在输出URL中


这样,我最终应该能够显示每个博客的标题。我现在使用ID只是为了简单。任何帮助都将不胜感激。

您的路由定义说第三个值称为
id
,但您正在尝试在方法中绑定
hiddenBlogId
。这两个名字需要匹配。将
hiddenBlogId
操作方法参数更改为
id
,或使用
{hiddenBlogId}
占位符映射新路由

如果您只需输入,您是否获得id参数的值?您的maproute可能就是问题所在。尝试将
id
设置为可选,并删除
action=“blogpost”
部分。啊……很抱歉误读了该部分。尝试
routes.MapRoute(“MyBlog”,“blog/{id}”,new{controller=“blog”,action=“blogpost”,id=urlparmeter.Optional})在这种情况下,我通常更喜欢在id上设置一个默认值,但有几种方法可以处理这个问题。这是行不通的。我有另一个由blogcontroller提供服务的视图,它首先被访问,称为bloglist。谢谢你给我的所有建议。你真是太好了。我就是不能让它工作。有人有线索吗?我已经做了这么长时间了,这是一个非常简单的想法。