0
컨트롤러를 숨기려고 할 때 링크 컨트롤러 인수를 추가, 그래서 나는 다음과 같은 경로가 다음 routehandler과 HttpHandler를 가진ActionLink 내가 그룹의 값에 따라 컨트롤러를 만들고 싶어 할
routes.MapRoute(
name: "Default",
url: "{group}/{action}",
defaults: new { group = "Default", action = "Index" }
).RouteHandler = new MyRouteHandler();
을 :
public class MyRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new MyHttpHandler(requestContext);
}
}
public class MyHttpHandler : IHttpHandler
{
RequestContext _requestContext;
public MyHttpHandler(RequestContext requestContext)
{
_requestContext = requestContext;
}
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
var groupName = _requestContext.RouteData.GetRequiredString("group");
// Select the controller, e.g. Home:
_requestContext.RouteData.Values.Add("controller", "Home");
IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory();
IController controller = factory.CreateController(_requestContext, "Home");
if (controller != null)
{
controller.Execute(_requestContext);
}
}
}
이 모든 작업을하지만 넣어 경우 @ Html.ActionLink ("인덱스", "인덱스")는 다음 링크를 결과 페이지 :
[A HREF = "/? 컨트롤러 = 홈 "] 색인 [/ a]
누군가가 왜 컨트롤러 인수가 Html.ActionLink를 사용할 때 추가되는지 말할 수 있습니까? (컨트롤러에 Home 인수를 추가하는 것을 원하지 않습니다.)
대단히 고마워요!
이 내 문제에 대한 해결책이 아니다. 컨트롤러가 아직 URL에 있습니다. – Tim
@Tim 맞춤형 Routehandler를 제거하고 있습니까? 위의 예제는 다음 링크를 제공합니다 : http : //.../Group, 현재 컨트롤러가 "HomeController" – Yusupov