RouteData中的参数ok,但在控制器中作为null传递

时间:2010-02-03 13:59:20

标签: asp.net-mvc asp.net-mvc-routing renderaction

我现在进入MVC已经有几个星期了,而且每天都会出现一些新的东西,让我觉得很奇怪。所以,我试着找到我面临的问题的答案。尽管如此,对于当前的问题,我似乎无法在stackoverflow或谷歌的任何地方找到这个问题的下降答案......

我在使用HTML.RenderAction方法将参数传递给控制器​​时遇到问题。由于某种原因,参数在RouteData中正确结束,但“函数参数”为空。我认为它与我的路由映射有关,所以我想在这里发布它们以获得更多输入。

我的路线图(除其他外,但我知道我当前的行动是使用此根):

routes.MapRoute("Default","{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = "" },
            null,
            new[] { "Web.Controllers" }
        );

我的控制器操作:

public ActionResult GeneralManagementDetail(int? id)
{
        //dostuff
}

RenderAction调用:

<% Html.RenderAction("GeneralManagementDetail", "Person", new { id = 4 }); %>

当然,“4”当前是一个硬编码值,它将成为我所在的包含foreach循环的对象的id。

现在,结果是,控制器中的“int id”是NULL,但是当“QuickWatching”RouteData时,它肯定有一个keyvalue对“id,4”...

2 个答案:

答案 0 :(得分:1)

好的,只是为了澄清,问题显然是控制器被缓存在提供给我们的框架中(不同的开发团队负责框架)。因此,当我们挖掘框架并确保容器不再缓存时,参数的传递就像一个魅力。   非常感谢您的答案,但问题出现在我们自己的公司内部!

答案 1 :(得分:0)

也许“id =(int?)null”可以解决这个问题吗?我的意思是,如果类型混乱了怎么办。