我发现了我认为是一些奇怪的行为与T4MVC。 具体来说,我试图建立一个ActionLink的(使用的HtmlHelper)的动作,其中可选的参数值为null。 这工作得很好大部分的时间。 然而,如果当前的路由是其中的ActionLink正在修建同样的和OptionalParameter有一个非空值,所产生的ActionLink的将指定从当前路由上下文的可选参数的值。
这是一个罗嗦的解释,我觉得代码将有助于澄清。
调节器
public virtual ActionResult Today(int? lineNumber = null)
{
return Index(DateTime.Today, DateTime.Today, lineNumber);
}
路线
context.MapRoute(
"TodaysProductionSchedules",
"Production/{Controller}/Today/{lineNumber}",
new
{
area = AreaName,
controller = MVC.Production.ProductionSchedules.Name,
action = MVC.Production.ProductionSchedules.ActionNames.Today,
lineNumber = UrlParameter.Optional
});
剃刀
@Html.ActionLink("Show Today", MVC.Production.ProductionSchedules.Today(null))
正如我前面提到的,如果我没有对当前被映射到这个路线图,该链接将被正确生成。 然而,如果当前视图确实映射这条路线与我要么省略值或供给空(如见于剃刀片断),则LINENUMBER参数会从当前路线值其值。
我想这可能是T4MVC个bug,因此我会后对T4MVC的CodePlex网站的链接到这个话题为好。 提前致谢!