我遇到了MVC-3为我生成传出路由的问题。
这是我在两种情况下所使用的网页的地址:http://localhost:1283/Conflict/Create/1200/300
以下是地图路线:
routes.MapRoute(
null, // Route name
"{controller}/{action}/{custId}/{projId}", // URL with parameters
null, // Parameter defaults
new { custId = @"\d+", projId = @"\d+" }
);
routes.MapRoute(
null, // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
情景1:
来自控制器:
public ActionResult Create(int custId, int projId)
{
return View();
}
从视图:
@Html.ActionLink("Back to List", "Index", "Conflict", new { custId = ViewBag.custId, projId = ViewBag.projId }, null)
创建的结果链接。
http://localhost:1283/Conflict?custId=1200&projId=300
如果我将控制器代码更改为如下所示:
public ActionResult Create(int custId, int projId)
{
ViewBag.custId = custId;
ViewBag.projId = projId;
return View();
}
我没有对视图进行任何更改,只将这两行添加到控制器并创建了以下链接:
http://localhost:1283/Conflict/Index/1200/300
我在这里缺少什么?这是一致的行为,我能够在我的应用程序的其他方面重现这一点。 “解决方案”很明显,但我的问题是为什么?
答案 0 :(得分:2)
正在发生的事情是您的链接中的“?custId = 1200& projId = 300”部分来自您用于获取您所在页面的链接。所以Html.ActionLink调用是这样做的:
在第二种情况下,您实际上是在提供值,因此链接正常生成。希望有所帮助。