알 수없는 작업을 처리하는 컨트롤러가 내 사이트에 있고보기가 있으면 반환합니다. 이는 컨트롤러를 수정하지 않고도 사이트의 특정 영역에 정적 컨텐츠를 추가 할 수 있도록하기위한 것입니다. 지금 직면 한 문제는 이러한 "알 수없는"모든보기에 대한 링크가 포함 된 sitemap.xml 파일을 만드는 것입니다. 사이트 맵을 생성하는 내 메서드에서 이러한 정적 콘텐츠 뷰를 열거하는 가장 좋은 방법은 무엇입니까? 난 그냥 것,ASP.NET MVC : 사용 가능한 뷰를 모두 얻으려면 어떻게해야합니까?
protected override void HandleUnknownAction(string actionName)
{
GetUnknownActionResult(actionName).ExecuteResult(ControllerContext);
}
[NonAction] //public so it is testable
public ActionResult GetUnknownActionResult(string actionName)
{
var result = View(actionName);
if (result.ViewEngineCollection.Any(engine => engine.FindView(ControllerContext, result.ViewName, null, true).View != null))
{
return result;
}
return new HttpNotFoundResult();
}
정적 컨텐츠? 왜 그것을 htm 파일로 콘텐츠 폴더 (또는 그 하위 폴더)에 넣지 않았습니까? – tvanfosson
콘텐츠는 마스터 페이지 (동적 요소가 있음)의 컨텍스트에 표시해야하므로 실제로 정적 인 것은 아닙니다. 하지만 문제는 디자인 문제 일 수 있으며 HTML을 마스터에로드하는 것을 고려해야합니다. 그래도 질문을 변경하지 않습니다 ... 여전히 특정 컨트롤러와 관련된보기를 열거하는 "최상의"방법을 알고 싶습니다. 지금은 View.MapPath()에보기 폴더에 하드 코딩 된 문자열을 붙여 놓았습니다. 이것이 최선의 방법이라면, 그렇게하십시오. – mkedobbs