【发布时间】:2010-02-04 19:47:05
【问题描述】:
我现在已经接触 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 时,它肯定有一个键值对“id,4”...
【问题讨论】:
-
这对我们有用,但我们不会重复使用 URI 中的令牌。如果您在操作和对
RenderAction的调用中将id更改为detailId是否有效? -
不,最初我认为这也是问题所在,所以我使用了一个与我所有映射中使用的任何名称都不相近的参数名称,它给出了相同的结果。
-
嗯...嗯,它对我们有用,但我们使用的是 MVC 2。你可能想在一个无所事事的项目中单独尝试这个,看看它是否在 MVC 1 和2. 由于这是在 Futures 中,因此在 MVC 1 中没有经过全面测试。
标签: asp.net-mvc asp.net-mvc-routing renderaction