我想使用RedirectToRouteResult重定向到像/用户/ 4#概要的URL。使用ASP.NET MVC 1.0,我一直没能找到一种方法来做到这一点? - 已我错过了

有帮助吗?

解决方案

您应该正确地构建在路由表中你的路由。例如:

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

其他提示

UrlHelper.GenerateUrl包括片段的参数。我创建的扩展方法

        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*/
            );
        }

然后创建了一个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;
    }
}

然后,你可以在你的单元测试,以检查它,你会与一个RedirectToRouteResult的方式创建一个新RouteValueDictionary(result.RouteValues)。

我有一个类似的问题,看看这里:

链接到位置页上(# ID)通过ASP.NET MVC机制?

我最终使用#创建的路线。

我做了类似的东西在我的网站这里。但它不是与RedirectToRouteResultRedirectToRouteResult不支持包括锚定部分的URL。

您需要建立自己的链接,甚至逻辑来处理锚部分的处理 - 像我一样。我的应用程序试图复制功能类似于Facebook的照片库的看法。每个链接到不同的页面必须有一个唯一的网址,所以为了这个,我使用的锚部分。但怎么把它并不直接转化为路线我必须在页面和使用Ajax加载在适当的内容手动解析URL的锚部分。这就是我想要的,因此我的作品。

下载源MVC 的代码,并检查了RedirectToRouteResult如何工作

有可能是更好的方法,但RedirectToRouteResult的简单继承和的重写 的ExecuteReuslt以允许可选的锚部分应该解决该问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top