Как добавить маршрут и обработать domain.com/?latest - PullRequest
0 голосов
/ 02 сентября 2010

Я пытаюсь обработать следующие URL: (1) domain.com, (2) domain.com/?latest

Это то, что я думаю, должно быть ...

Global.asax

routes.MapRoute(
    "HomeIndex", // Route name
    "/?{sortBy}", // URL with parameters
    new { controller = "Home", action = "Index", sortBy = UrlParemeter.Optional } // Parameter defaults
);

HomeController.cs

public ActionResult Index(string sortBy) {
    if (string.IsNullOrEmpty(sortBy))
        // display stuff in a way that's sorted
    else
        // just display stuff by default
    return View( ... );
}

Проблема: mvc не нравится маршрут, начинающийся с hard-кодированный "?", но !, если маршрут вообще не отображается и просто ищите request.querystring ["latest"], он будет иметь нулевое значение.

Какой лучший способ сделать это?Спасибо!

------- Редактировать:

Я знаю, что я не должен использовать только /? Последний и вместо этого я должен использовать /? SortBy =последний, но это более короткий URL-адрес !!! 1 и его легче набирать :) Я вижу, что Google иногда использует его, и я хочу быть похожим на Google;)

Отбросив тот факт, что он не самый лучшийспособ сделать это, есть ли способ сделать /? последние?Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Строка запроса неполная.Попробуйте это: domain.com/?sortBy=latest.Вы также можете удалить дополнительное отображение маршрута и использовать маршрутизацию по умолчанию.

0 голосов
/ 02 сентября 2010

На самом деле вам не нужна сортировкаBy в определении вашего маршрута.Просто убедитесь, что у метода действия есть аргумент с тем же именем.

routes.MapRoute(
    "HomeIndex", // Route name
    "", // URL with parameters
    new { controller = "Home", action = "Index" } // Parameter defaults
);

И да, в вашем маршруте часть ?latest не в порядке.Всегда должно быть в форме ?varname=varvalue.

...