Я заметил, как мне кажется, странное поведение с T4MVC. В частности, я пытаюсь создать ActionLink (, используя HtmlHelper )для действия, где значение необязательного параметра равно null. Это отлично работает большую часть времени. Однако, если текущий маршрут совпадает с тем, для которого строится ActionLink, И опциональный параметр имеет ненулевое значение, отличное от -, результирующий 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))
Как я упоминал ранее, если я в данный момент не нахожусь в представлении, которое сопоставлено с этим маршрутом, ссылка будет сгенерирована правильно. Однако, если текущее представление действительно отображает этот маршрут, И я либо опускаю значение, либо предоставляю null (, как показано во фрагменте бритвы ), параметр lineNumber примет свое значение из текущего значения маршрута.
Я думаю, что это может быть ошибка в T4MVC, поэтому я также размещу ссылку на эту тему на сайте codeplex T4MVC. Заранее спасибо!