이후의 패턴을 수행 할 수 있어야합니다.
이
경로 코드 :
// be sure to register your custom route before the default routes
routes.MapRoute(null, // route name is not necessary
"{username}",
new { controller = "Home", action = "Profile", }
);
routes.MapRoute(null,
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
컨트롤러 코드 :
public class HomeController : Controller
{
public ActionResult Profile(string username)
{
// http://mylink.com/myusername should hit this method
}
}
응답 한
내가없이로드 질문에 대답하지 않으려는 언급을 여기에 작동합니다 예입니다 디자인중인 URL 스키마 또는 프로젝트에 대한 정보를 알고 있어야합니다. 그러나 나는 그것이 바로 away.You에 문제가 당신이하고 싶은 말은 볼 2 개 이상의 URL의 :
, 이것은 당신이 어떤을 할 수 없음을 의미 {사용자 이름} 사용자 이름이 "정보"인 사용자. 그렇지 않으면 시스템에서 제공 할 콘텐츠 (약 페이지 또는 사용자 이름 "about"의 프로필 페이지)를 알 수 없습니다. MVC에서 URL은 대소 문자를 구분하지 않습니다.
더 많은 페이지로 더 큰 응용 프로그램을 만드는 경우 프로필 작업의 URL 범위를 지정하는 것이 좋습니다. 이상과 같이 아마 뭔가 :
, 당신은 아직도 당신이 원하는 URL 패턴을 수행 할 수 있습니다. 그러나 사용자가 다른 경로와 일치하는 사용자 이름을 가지지 않도록 여러 가지 유효성 검사를 추가해야하며 더 많은 사용자 지정 경로를 작성해야합니다. 그래서 당신은 정말로 당신 자신을 위해 더 많은 일을하고 있습니다. 당신은 경로에서이 같이해야 할 것이다 :
// more specific routes must be added first
routes.MapRoute(null,
"About",
new { controller = "Home", action = "About", }
);
routes.MapRoute(null,
"{username}",
new { controller = "Home", action = "Profile", }
);
routes.MapRoute(null,
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
위의 노선에 대한/정보] 행동에 대해 요청 및 프로필 액션에 다른 모든/somestring 요청을 일치합니다.
http://mylink.com/mycontroller/id –
@COLDTOLD와 같이 url somethink 옆에 컨트롤러 이름이 필요하기 때문에 작동하지 않을 가능성이 높습니다. 컨트롤러 이름이 필요하지 않습니다. URL 패턴은 완전히 합법적입니다. @salamis, 프로필 작업 방법의 서명은 무엇입니까? 'string username' 또는'int? 이드? – danludwig
문자열 사용자 이름 mate. – glarkou