2013-03-21 3 views
1

ASP.NET 4.5 WebForms의 FriendlyUrls를 사용하여 간단한 테스트를하고 있지만 Foo.aspx는/Foo/(작동)가됩니다. 나는 FriendlyUrlSegments 내가이 오류를 얻을 컨트롤에 URL의 ID를 얻기 위해 속성 사용하려고하면 : I 업데이트 시도ASP.NET WebForms FriendlyUrlSegments에 0 개의 인수를 사용하는 생성자가 포함되어 있지 않습니다.

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

면 : [FriendlyUrlSegments] 오류가

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

방법을 NuGet의 FriendlyUrls.

답변

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); 

만일 내가 틀렸다면 나에게 고쳐주세요! 도움이 되길 바랍니다.

관련 문제