Я заметил, как мне кажется, странное поведение с 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. Заранее спасибо!