2017-12-14 4 views
0

저는 C#에 대해 많이 알고 있으며 프론트 엔드 개발자입니다. 나는 면도기보기에서 물을 튀기고 있었고 그래서 나는 그 주위를 돌아 다닐 수 있었다. 일부 C# 라우팅이 필요할 수도있는 프로젝트를 개발 중입니다. (제 제한적인 이해로 인한 것 같습니다).물리적 리소스가 존재하지 않는 경우에만 일반 Razor 페이지로 연결

정적 리소스 (실제 .cshtml 페이지)와 데이터베이스에 저장된 콘텐츠가 혼합 된 웹 사이트를 구축했습니다. 이러한 콘텐츠 조각에 대한 모든 링크는 핸들 막대 템플릿을 통해 생성되므로 내가 알고있는 템플릿 내에서 Razor를 사용할 수 없습니다. 데이터베이스 콘텐츠는 page.cshtml을 사용해야하며 URL에서 페이지을 제거해야합니다. 그래서 본질적으로

, 당신이 my-page.cshtml가있는 경우 다른 확인 http://www.example.com/page/my-pagehttp://www.example.com/my-page로 다시 사용해야 http://www.example.com/my-page을했다.

나는 이것을 사용하려고 해요하지만 작동하지 않습니다 :

using System.Web.Routing; 

public class Routes 
{ 
    void RegisterRoutes(RouteCollection routes) 
    { 
    routes.MapPageRoute("Deals", 
     "/{page}", "~/page.cshtml"); 
    } 
} 

은 면도기를 사용이 가능합니까? C# RouteConfig을 통해 라우팅을 시도했지만 프로젝트에서 .NET의 V4를 사용하므로 특성 라우팅이 작동하지 않습니다. 또한 디렉토리 내에있는 페이지가 있기 때문에 catchall 라우트를 사용할 수 없습니다.

DB에 /page/에 대한 링크를 명시 적으로 지정하고 IIS를 다시 쓸 수있는 유일한 방법은 무엇입니까?

내 다른 옵션은 항상 page.cshtml을 칠하고 내 DB의 내용을 찾을 수없는 경우, 그것은 부분적으로 my-page.cshtml에로드합니다. 그러나 누군가가 주소 표시 줄에 http://www.example.com/my-page을 입력하면 어떻게됩니까? 내-page.cshtml 파일 경우 확인할 수

답변

0

는 컨트롤러에

string myFile = Server.MapPath("path to my-page.cshtml"); 

if(File.Exists(myFile)) 
{ 
    return View("path to my-page.cshtml"); 
} 

else 
{ 
    //from db 
} 

PS 존재 : 당신이 컨트롤러에서 System.IO를 사용할 필요가

관련 문제