2013-03-21 2 views
1

Я делаю простой тест с помощью FriendlyUrls в ASP.NET 4.5 WebForms, Foo.aspx становится/Foo/(он работает). Когда я пытаюсь использовать FriendlyUrlSegments атрибутов, чтобы получить идентификатор из URL в элемент управления, я получаю эту ошибку:ASP.NET WebForms FriendlyUrlSegments не содержит конструктор, который принимает 0 аргументов

'Microsoft.AspNet.FriendlyUrls.ModelBinding.FriendlyUrlSegmentsAttribute' does not contain a constructor that takes 0 arguments 

метод, который имеет ошибку [FriendlyUrlSegments]:

public Person GetPerson([FriendlyUrlSegments]int? id) 
{ 
    return People.Find(p => p.Id == id); 
} 

Я пытался обновить FriendlyUrls от NuGet.

ответ

2

Написать свой метод, как так:

public Person GetPerson([FriendlyUrlSegments(0)] int? id) 
{ 
    return People.Find(p => p.Id == id); 
} 

Атрибут [FriendlyUrlSegments] использует нулевой индексированную карту сегментов после того, как страницы в URL. Например, если вы запрашиваете/Hello/foo/bar/... и ваша страница Hello.aspx, то [FriendlyUrlSegments(0)] будет отображаться на «foo», [FriendlyUrlSegments(1)] будет отображаться в «bar» и так далее.

0

Я думаю, что способ, которым вы это сделали, привязан к модели не для получения информации из URL-адреса. Я прочитал это article

из scott hanselman и я попробую. У меня была такая же проблема с тобой. И я подумал [FriendlyUrlSegments]int? id

для привязки модели. Вместо этого я сделал это:

var id=Request.GetFriendlyUrlSegments()[0]; 
yourmethod(id); 

Пожалуйста, не стесняйтесь исправить меня, если я ошибаюсь! Надеюсь, что эта помощь.

Смежные вопросы