asp.net MVC3 пользовательский маршрут для отчета Doddle - PullRequest
1 голос
/ 23 сентября 2011

Я использую каракули отчет, который выводит быстрые отчеты в форматах pds, html и xls. Он работает нормально, как показано в документации ниже:

http://doddlereport.codeplex.com/wikipage?title=Web%20Reporting

Теперь мне нужно иметь возможность передать значение идентификатора в контроллер, чтобы отчет генерировался динамически.

маршрут по умолчанию выглядит следующим образом:

     return routes.MapRoute("DoddleReport",
                "{controller}/{action}.{extension}",
                new { controller = defaultAction, action = defaultAction },
                new { extension = new ReportRouteConstraint() }

, который выводит следующий URL localhost/Report/ReadMeters.htm при использовании следующего

actionlink @Html.ActionLink("HTM", "ReadMeters", new{ extension = "htm"})

Я попытался добавить новый маршрут в global.asax, который будет принимать параметр ID следующим образом:

 routes.MapRoute("DoddleReportExtension",
                "{controller}/{action}.{extension}/id",
                new { controller = "Report", action = "Index" },
                new { extension = new ReportRouteConstraint(),
                id = UrlParameter.Optional
                }
                );

и передача значения с помощью actionlink:

@Html.ActionLink("View", "ReadMeters", new { id = ViewBag.ID, extension = "htm" }

но это вывод URL localhost/Report/ReadMeters.htm?id=19

это не работает, и я получаю следующую ошибку:

Ошибка сервера в приложении '/'.
Ресурс не найден.
Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: /Report/ReadMeters.htm

Есть идеи, как это исправить, пожалуйста? Это мой первый проект MVC, и до сих пор я использовал механизмы маршрутизации по умолчанию для других областей проекта, но застрял на этом.

Ваша помощь приветствуется, спасибо

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Я знаю, что опоздал, но я являюсь автором DoddleReport и просто хотел сказать, что эта проблема была решена в последней версии исходного кода и пакета NuGet. Он также поддерживает MVC Areas.

Надеюсь, проект помог вам!

1 голос
/ 23 сентября 2011

вы могли бы сделать что-то вроде этого ...

routes.MapRoute("DoddleReportExtension",
   "{Controller}/{Action}/{Extension}/{id}/",
    new { controller = Report, action = Index,Extension=new ReportRouteConstraint(), id=UrlParameter.Optional });

и затем вы можете отправить расширение и идентификатор в ActionResult ..

public ActionResult showItem(string Extension)
{
    //view stuff here.
}

public ActionResult showItem(string Extension, int id)
{
    //view stuff here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...