1

다음 코드는 내가하고 싶은 일을합니다. ForSaleOrRent 문자열 매개 변수의 값이 ForSale 또는 ForRent 인 경우 작업 방법은 HttpNotFoundResult을 반환합니다. 내 질문은 Route 속성 만 사용하여이 작업을 수행 할 수 있습니까?경로 속성을 사용하여 특정 경로 매개 변수 값만 허용 할 수 있습니까?

[Route("post/{ForSaleOrRent}")] 
public ActionResult PostProperty(string ForSaleOrRent) 
{ 
    bool IsValidUrl = ForSaleOrRent.ToUpper() == "FORSALE" || 
         ForSaleOrRent.ToUpper() == "FORRENT"; 
    if (!IsValidUrl) 
    { 
     return new HttpNotFoundResult(); 
    } 
    return View(ForSaleOrRent); 
} 
+0

특정 2 별개의 기능 매핑을 사용하지 않을까요 귀하의 문제를 해결하기위한 주소는 무엇입니까? – Phil1970

+0

@ Phil1970 위의 코드도 잘 작동하지만이 경로 속성을 사용하여 수행 할 수 있는지 알고 싶습니다. –

+1

첫 번째 장소에서'enum'을 사용하지 않으시겠습니까? – haim770

답변

1

그냥 인라인 제약을

[Route("post/{ForSaleOrRent:regex(^forrent$|^forsale$)}")] 
public ActionResult PostProperty(string ForSaleOrRent) 
{ 
    return View(ForSaleOrRent); 
} 

참조 사용

+0

ForSaleOrRent의 가치를 알려주시겠습니까? –

+0

방금 ​​테스트했는데 오류가 발생했습니다. " 'DefaultInlineConstraintResolver'유형의 인라인 제한 조건 해결 프로그램이 다음 인라인 제한 조건 ('값 (forrent | forsale)')을 해결하지 못했습니다." –

+1

나는 그것에 대해 아주 확신하지 못했습니다. 그것은 게시물 "이전에 사용자 정의 인라인 제약 조건을 제공하는 라우팅"에서 말했지만, 어떻게 변경되었는지에 대한 어떠한 언급도하지 않았습니다. 위의 두 번째 링크를 발견하고 제약 조건을 수정했습니다. 또는 두 번째 링크에서 'ValuesConstraint'를 사용할 수 있습니다 (Custom Route Constraints 섹션 참조). – NightOwl888