Asp.net mvc 3 ASP.NET MVC3 URL参数解析为空

Asp.net mvc 3 ASP.NET MVC3 URL参数解析为空,asp.net-mvc-3,Asp.net Mvc 3,出于某种原因,每当我在本地安装的ASP.NET MVC3中尝试解析带有参数的URL时,参数在控制器的处理函数中基本上都是null 例如,我有 public class HomeController : Controller { public ActionResult Foo(string bar) { ViewBag.Message = bar; return View(); } } 并尝试访问http://localhost/myap

出于某种原因,每当我在本地安装的ASP.NET MVC3中尝试解析带有参数的URL时,参数在控制器的处理函数中基本上都是
null

例如,我有

public class HomeController : Controller 
{
    public ActionResult Foo(string bar)
    {
        ViewBag.Message = bar;
        return View();
    }
}
并尝试访问
http://localhost/myapp/foo/sometext
http://localhost/myapp/home/foo/sometext
bar
的计算结果基本上是
null
,而不是
sometext

我很有信心我的MVC3安装工作正常,因为几天前我已经成功运行了一个带有自定义路由规则的独立应用程序。我有点担心我可能把配置标志弄糟了


您知道这里可能有什么问题吗?

默认路由映射要求在您的操作中使用名为
id
的参数

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
如果您将操作更改为:

public ActionResult Foo(string id)
它应该会起作用。如果无法更改参数名称,也可以尝试这样的URL:

http://localhost/myapp/home/foo/?bar=sometext

呵呵。这确实奏效了,谢谢。然而,我的印象是,我应该能够编写一个控制器函数,比如
public-ActionResult-foo(string-herp,string-derp){}
,然后通过
http://localhost/myapp/home/foo/1/2/
或类似内容。这是否意味着我必须为我在参数数量(和参数名称)方面使用的每个URL模式编写一个自定义路由?这听起来不太方便。您将无法通过
via导航到像
public ActionResult foo(string herp,string derp)
http://localhost/myapp/home/foo/1/2/
没有自定义路线。但是,只要您有
herp
derp
的文本框,就可以通过HTTP POST向其提交表单,而无需设置自定义路由。根据我的经验,在一个给定的项目中,制定一些满足我所有路由需求的约定并不困难,但这取决于你的需求。是的,我想从长远来看,制定路由规则并不难。这只是有点难以接受,特别是因为我的MVC经验来自CakePHP和CodeIgniter。但别介意我D谢谢你的大力帮助!