如何使用“?”路由查询字符串以及如何处理它

时间:2010-08-29 20:54:08

标签: asp.net-mvc asp.net-mvc-2

在我的全局asax文件中,我想映射一个这样的路由:

http://domain.com/add/link?url=http%3A%2F%2Fgoogle.com

然后使用名为Add。

的动作使用我的LinkController捕获它

我这样做吗?

global.asax->

routes.MapRoute(
    "AddLink",
    "Add/Link?{url}",
    new { controller = "Link", action = "Add" }
);

LinkController->

public string Add(string url)
{
    return url; // just want to output it to the webpage for testing
}

??这似乎不起作用。我究竟做错了什么?谢谢!

2 个答案:

答案 0 :(得分:15)

ASP.Net MVC将自动绑定查询字符串中的参数;你不需要把它放在路线上。

您的路线可以简单地

routes.MapRoute(
    "AddLink",
    "Add/Link",
    new { controller = "Link", action = "Add" }
);

答案 1 :(得分:0)

显示mvc源代码ValueProviderFactories。

namespace System.Web.Mvc {
    using System;

    public static class ValueProviderFactories {

        private static readonly ValueProviderFactoryCollection _factories = new ValueProviderFactoryCollection() {
            new FormValueProviderFactory(),
            new RouteDataValueProviderFactory(),
            new QueryStringValueProviderFactory(),
            new HttpFileCollectionValueProviderFactory()
        };

        public static ValueProviderFactoryCollection Factories {
            get {
                return _factories;
            }
        }

    }
}