Неоднозначные действия - PullRequest
       13

Неоднозначные действия

1 голос
/ 25 января 2010

Есть ли способ иметь несколько действий с разными параметрами? Я видел это с помощью флага HttpPost глаголов, но, похоже, он не работает для меня в других местах.

Текущий запрос на действие List для типа контроллера FoldersController` неоднозначен между следующими методами действия.

public ActionResult List()
{ 
 //... 
}

public ActionResult List(DateTime start)
{
 // ...
}

public ActionResult List(string key)
{
 // ....
}

Попытка этого параметра маршрута, который я нашел на ...

Я все еще немного озадачен тем, как работает маршрутизация. Это то, что я до сих пор. Маршрутизация ASP.NET MVC через атрибуты метода

Но я все еще получаю неоднозначную ошибку. Это не имеет большого смысла для меня - это два совершенно разных маршрута - он должен точно знать , какой ActionResult вызвать. Но это не так ...

    [UrlRoute(Path = "List/Days/{days}")]
    [UrlRouteParameterConstraint(Name = "days", Regex = @"\d+")]
    public PartialViewResult List(int days)
    {
        return PartialView("List", Folders.List());
    }

    [UrlRoute(Path = "List/Rings/{ring}")]
    [UrlRouteParameterDefault(Name = "ring", Value = "all")]
    public PartialViewResult List(string ring)
    {
        return PartialView("List", Folders.List());
    }

Ответы [ 2 ]

1 голос
/ 25 января 2010

Поскольку у вас не установлено AcceptVerbs , он не может определить, какой метод вызывать. Не могли бы вы уточнить: «Мне кажется, что это не работает в других местах»?

1 голос
/ 25 января 2010

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

Но в общем, если что-то начинает запутываться в программе, вам будет неудобно использовать: - http://odetocode.com/Blogs/scott/archive/2010/01/25/kiss-your-asp-net-mvc-routes.aspx

Таким образом, другой подход, который избегает необходимости придумывать регулярные выражения для устранения неоднозначности действий «дата и все остальное» через регулярное выражение, заключается в том, чтобы иметь схему маршрутизации:

  • / по дате / гг-мм-дд
  • / по-ключ / ключ
...