Как направить строку запроса с помощью «?» и как с этим справиться - PullRequest
7 голосов
/ 30 августа 2010

В моем глобальном asax-файле я хочу отобразить маршрут, такой как этот:

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

, а затем перехватить его, используя мой LinkController с действием, называемым Add.

Делать ли я это?

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 ]

15 голосов
/ 30 августа 2010

ASP.Net MVC автоматически свяжет параметры из строки запроса;вам не нужно указывать его в маршруте.

Ваш маршрут может быть просто

routes.MapRoute(
    "AddLink",
    "Add/Link",
    new { controller = "Link", action = "Add" }
);
0 голосов
/ 30 августа 2010

Показать исходный код 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;
            }
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...