Pregunta

Quiero utilizar un RedirectToRouteResult para redirigir a una URL como / usuarios / 4 # Resumen. Utilizando ASP.NET MVC 1.0, no he sido capaz de encontrar una manera de hacer eso? - Me he perdido

¿Fue útil?

Solución

Se debe construir adecuadamente sus rutas en la tabla de rutas. Por ejemplo:.

routes.MapRoute("MyRoute" ,"{controler}/{id}#{detail}" ,new { controller = "users", action = "index", id = (string)null, detail = "Summary" });

Otros consejos

UrlHelper.GenerateUrl incluye un parámetro fragmento. He creado un método de extensión

        public static string Action(this UrlHelper url, string actionName, string controllerName, string fragment, object routeValues)
        {
            return UrlHelper.GenerateUrl(
                routeName: null,
                actionName: actionName,
                controllerName: controllerName,
                routeValues: new System.Web.Routing.RouteValueDictionary(routeValues),
                fragment: fragment,
                protocol: null,
                hostName: null,
                routeCollection: url.RouteCollection,
                requestContext: url.RequestContext,
                includeImplicitMvcValues: true /*helps fill in the nulls above*/
            );
        }

A continuación, he creado una clase RedirectToFragmentResult

public class RedirectToFragmentResult: RedirectResult
{
    public UrlHelper Url {get;set;}
    public string Action { get; set; }
    public string Controller { get; set; }
    public string Fragment { get; set; }
    public object RouteValues { get; set; }
    public RedirectToFragmentResult(UrlHelper url, string action, string controller, string fragment, object routeValues)
        :base(url.Action(action, controller, fragment, routeValues))
    {
        Url = url;
        Action = action;
        Controller = controller;
        Fragment = fragment;
        RouteValues = routeValues;
    }
}

A continuación, puede simplemente crear una nueva RouteValueDictionary (result.RouteValues) en su unidad de prueba para comprobar que la forma en que lo haría con un RedirectToRouteResult.

Yo tenía un problema similar, echar un vistazo aquí:

Vinculación a la ubicación en la página (# id) a través de mecanismos ASP.NET MVC?

Terminé la creación de una ruta utilizando #.

hago una cosa así en mi sitio aquí . Pero no es con RedirectToRouteResult. RedirectToRouteResult no soporta incluyendo una parte de anclaje a la URL.

Es necesario construir el enlace a sí mismo y tal vez incluso la lógica para manejar el procesamiento de la pieza de anclaje - como lo hice. Mis aplicación intenta funcionalidad réplica similar a la de las fotos de Facebook vistas galería. Cada enlace a una página diferente debe tener una URL única, por lo que para ello utilizo la parte de anclaje. Pero coz no se traduce directamente a una ruta que tengo que analizar la parte de anclaje de la URL manualmente en la página y el uso de AJAX para la carga en el contenido apropiado. Esto es lo que quería por lo que funciona para mí.

scroll top