2017-12-22 18 views
0

URL에 대시를 넣을 수없는 MVC5에서 작업하고 있습니다. 내가 원하는 것은 단어 사이에 대시를 넣는 것입니다. 제 작업 코드를 열심히보십시오..net MVC에서 URL에 대시를 넣으려고합니다. 어떻게해야합니까?

  routes.Add(
        new Route("{MyApple}/{page}", 
         new RouteValueDictionary(
          new { controller = "MyApple", action = "Index", page = "" }), 
          new HyphenatedRouteHandler()) 
       ); 

그리고 내 컨트롤러는 다음과 같습니다 :

내 경로 구성은

public ActionResult Index(string page) 
{ 
    if (System.IO.File.Exists(Server.MapPath("/Views/MyApple/" + page + ".cshtml"))) 
    { 
     string userId = ""; 
     if (Session["AppId"] != null) 
     userId = Session["AppId"].ToString(); 

     Session["ReturnUrl"] = Url.Action("EmptyTemplate"); 
     IBaseViewModel model = new BaseViewModel(); 
     return View(page, model); 
    }    
} 

이 매개 변수가 페이지로 이동 내 컨트롤러입니다. 예 : devpage = aspdotnet 그러면 뷰가 렌더링됩니다. aspdotnet.html

이 편집 된 내용으로 도와주세요. 소문자로 URL에 대시하고 싶습니다. 예 : 다음 내가

localhost/case-study/perfect-solution

.Help (내 영어를 신경 쓰지 마하는 것은) 이해할 수있을 것이다 perfectsolution.html 페이지가 있다고 가정하자. 감사합니다.

참고 : 색인 페이지에서 필자는 "완벽한 해결책"을 사용하여보기에 전달하지만 URL, 완벽한 해결책으로 원합니다.

+0

안녕, 단일 컨트롤러에서 특정 작업을 목표로? 아니면 시스템 전체에 대한 조정입니까? 컨트롤러의 관련 부분도 표시 할 수 있습니까? – Stefan

+0

단일 컨트롤러에 있습니다. 좋아, Lemme 내 질문 편집 –

+0

컨트롤러를 게시 할 수 있습니까? 나는 행동의 서명을보고 싶다. – Stefan

답변

2

이 유형 URL/사례 연구/산 디에고 베그 - 축제, 캐스케이드가 컨트롤러이고 san-diego-veg-festival이 매개 변수입니다.

귀하의 의견에 따라, 나는 당신이 CaseStudies 컨트롤러의 Index 방법으로 매개 변수 값을 전달하려고하는 추측을했다. 필요에 따라 라우팅의

두 가지 유형의 당신은 누구를 선택할 수 있습니다 선택할 수 :

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "CaseStudiesRoute", 
      url: "case-studies/{devPage}", 
      defaults: new { controller = "CaseStudies", action = "Index", devPage = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

:

1. 협약 기반 라우팅 당신의 RouteConfig.cs 파일에서

가 이러한 변경을 컨트롤러 :

public class CaseStudiesController : Controller 
{ 

    public ActionResult Index(string devPage) 
    { 
     return View(); 
    } 

} 

지금 브라우저를 사용하여 GET URL에 대한 요청을 /case-studies/san-Diego-veg-festival에게 주면 컨벤션 기반 라우팅을 사용해야합니다.

2.라우팅 속성에서

귀하의 RouteConfig.csroutes.MapMvcAttributeRoutes();을 추가하여 라우팅, 속성 수 있도록, 이제 RouteConfig.cs 보이는 같은 :

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapMvcAttributeRoutes(); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

컨트롤러 :

public class CaseStudiesController : Controller 
{ 

    [Route("case-studies/{devPage?}")] 
    public ActionResult Index(string devPage) 
    { 
     return View(); 
    } 

} 
이제

사용하여 귀하의 브라우저에 GET 요청을 제공 URL, /case-studies/san-Diego-veg-festival, 속성 라우팅과 함께 작동해야합니다.

참조

1.

2.

+0

에 대한 가치로 간주됩니다. 죄송합니다. 내 경우 모두 작동하지 않습니다. 내가 너를 보여줘야 겠어, 내 컨트롤러? –

+0

예. 게시물을 편집하고 컨트롤러와 'RouteConfig.cs'세부 정보를 추가하십시오. 다른 사람이 나를 더 잘 안내하는 데 도움이 될 수 있습니다. – stom

+0

좋아, 이제 편집 중입니다 –

1

라우팅 속성 기능을 사용해보십시오

[경로 ("연구/완벽한-솔루션")]

이 예 :

[Route("study/perfect-solution")] 
public ActionResult PerfectSolution() 
{ 
// code here 
} 

당신이 매개 변수를 전달하려는 경우이 필요로 지정 될

예 :

[Route("study/perfect-solution/{parameter}")] 
public ActionResult PerfectSolution(string parameter) 
{ 
// code here 
} 
+0

고마워요. 그렇지만, 저는 그것을 사용했습니다. 이 유형의 URL이 필요합니다. /case-studies/san-Diego-veg-festival. 어떻게 할 수 있습니까? 참고 : casestudies 컨트롤러이고 san-diego-veg-festival은 매개 변수입니다. –

+0

은 san-diego-veg-festival 액션 이름이거나 액션에 전달할 인수입니까? –

+0

URL을 –